【发布时间】:2014-10-16 04:19:13
【问题描述】:
我正在解决一个 python 练习,但无法理解枚举操作: 谁能告诉我这是如何工作的:
>>> a = [[('A', {}), 1, None, None, 0], [('B', {}), 1, None, None, 0]]
>>> b = [('A', {}), ('B', {})]
>>> for each in b:
... my_idx = [idx for idx, val in enumerate(a) if a[idx][0] == each][0]
... print my_idx
...
它产生的输出是:
0
1
为了理解这一点,我做了以下更改:
>>> a = [[('A', {}), 1, None, None, 0], [('B', {}), 1, None, None, 0], [('A', {}), 1, None, None, 0], [('B', {}), 1, None, None, 0]]
>>> b = [('A', {}), ('B', {}), ('A', {}), ('B', {})]
>>> for each in b:
... my_idx = [idx for idx, val in enumerate(a) if a[idx][0] == each][0]
... print my_idx
...
并认为它应该打印:
0
1
2
3
但它产生了:
0
1
0
1
我哪里出错了?我应该如何修改它来产生:
0
1
2
3
谢谢。
【问题讨论】:
-
您到底想解决什么问题?同样
if val[0]与if a[idx][0]相同 -
给定 a 和 b,我正在尝试修改逻辑以便打印 0 1 2 3 @PadraicCunningham
标签: python list dictionary enumerate enumerated-types