在Python中,我遇到了一个奇怪的错误,a = [x[1], x[2]]
可以工作,但是a = x[1:]
不能。你知道吗
>>> out
farray([Y[0], Y[1], Y[2]])
>>> out[1]
Y[1]
>>> remaining_out = [out[1], out[2]]
>>> remaining_out[0]
Y[1]
>>> remaining_out = out[1:]
>>> remaining_out[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/kmshah4/.local/lib/python3.6/site-packages/pyeda/boolalg/bfarray.py", line 485, in __getitem__
nsls = self._norm_slices(fsls) File "/home/kmshah4/.local/lib/python3.6/site-packages/pyeda/boolalg/bfarray.py", line 890, in _norm_slices nsls.append(_norm_index(i, fsl, *self.shape[i]))
File "/home/kmshah4/.local/lib/python3.6/site-packages/pyeda/boolalg/bfarray.py", line 1127, in _norm_index
raise IndexError(fstr.format(dim, start, stop))
IndexError: expected dim 0 index in range [1, 3)
请帮忙。你知道吗
Python中的对象不自动支持切片表示法,因为它们支持索引。必须编程。不过,可能有比您使用的语法更方便的语法。你知道吗
如果它是iterable,你可以先把它转换成一个列表,然后把它切片,就像
对于特别大的iterables(这里似乎不是这样),这可能是低效的。在这种情况下,
islice
在解包到列表之前,它是。你知道吗但是对象不会自动支持迭代,因为它们也支持索引。如果是这样的话,你仍然可以用
range()
和理解手动迭代不过,在你有更多的元素需要处理之前,这个时间并不短。如果你非常需要这个模式,你可以把它抽象成一个函数。你知道吗
最后,对象不一定支持
len
,因为它们支持索引。如果您事先不知道长度,那么您所能做的就是在该点循环并捕捉LookupError
。你知道吗相关问题 更多 >
编程相关推荐