[string for i, string in enumerate(a)] 在 python 中如何工作?

问题描述 投票:0回答:2

我正在学习Python,但是

[string for i, string in enumerate(a)]
如何工作真的很困扰我。

这是我在学习Python时编写的2个示例代码

a = ['a','b','c', 'd']
d = [string for string in enumerate(a)]
print (d)

它将返回“[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]”。但是,如果我写下面的代码

a = ['a','b','c', 'd']

c = [string for i, string in enumerate(a)]
print(c)

它会回来

['a', 'b', 'c', 'd']

根据我的理解,

string in enumerate(a)
将翻译为“枚举对象”,例如RAM中的位置。我没有告诉 python i 是什么(我没有告诉 python
i
是索引或字符串是元素)。因此,代码将被解释为“list[“枚举对象”在“i”内迭代]”,但由于我没有告诉 python i 是什么,所以它会遇到错误。但是,它从枚举返回了一个元素列表。

python从我的代码中从哪里学到

string
表示枚举中的
element
i
表示索引?

python python-3.x list enumerate
2个回答
1
投票

enumerate(a)
为您提供
(0, 'a')
(1, 'b')
等等。在您的第一个代码中,您的字符串是
(0, 'a')
,这就是您得到的。

在第二个代码中,

i
(0, 'a')
的第一个元素(迭代数字 - 0、1等),
string
是第二个元素(即原始列表的元素)。您在列表中仅获取
string
,因此您仅获得第二个元素,它们是原始列表的元素,从而产生原始列表。


(我没有告诉python

i
是索引还是字符串是元素)

你确实做到了。


0
投票

因为 enumerate(a) 返回一个 (index, value_of_index) 的元组

第一种情况:“枚举(a)中的字符串”,元组(索引,value_of_index)存储在变量“string”中,您将其保存在列表“d”中,将元组作为输出。

第二种情况:“string for i,string in enumerate(a)”,索引存储在变量“i”中,value_of_index存储在“string”中,您将“string”保存在列表“c”中,只给出值在列表“a”中。

© www.soinside.com 2019 - 2024. All rights reserved.