当我运行此代码时:
arr = list(filter(lambda x: x > 0, arr))
for index, item in arr:
# do something
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
TypeError:'int'对象不可迭代
哪个没有意义,因为我list没有int.测试arr产量:
>>> print(arr)
[822]
>>> print(type(arr))
<class 'list'>
>>> print(len(arr))
1
Run Code Online (Sandbox Code Playgroud)
虽然有很多关于这种类型错误的问题,但这里没有一个解释.什么可能是错的?
问题不是filter不可迭代,而是你在for循环的头部进行迭代解包这一事实:
for index, item in arr:
# do somethingRun Code Online (Sandbox Code Playgroud)
由于元素arr是整数,你不能用两个值解压缩它们(你写作index, item赋值的"目标",但Python应该如何解决index, item = 1?).您可以enumerate(..)用来跟踪索引:
for index, item in enumerate(arr):
# do somethingRun Code Online (Sandbox Code Playgroud)
enumerate(..)将迭代作为输入,并生成一个可迭代的元组,其中每个元组包含索引(作为第一项),元素作为第二项.所以enumerate([1, 'a', 25])会产生(0, 1), (1, 'a'), (2, 25).
如果你不需要索引,你可以迭代items而不需要index:
for item in arr:
# do somethingRun Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |