我正在学习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
表示索引?
enumerate(a)
为您提供 (0, 'a')
、(1, 'b')
等等。在您的第一个代码中,您的字符串是 (0, 'a')
,这就是您得到的。
在第二个代码中,
i
是(0, 'a')
的第一个元素(迭代数字 - 0、1等),string
是第二个元素(即原始列表的元素)。您在列表中仅获取 string
,因此您仅获得第二个元素,它们是原始列表的元素,从而产生原始列表。
(我没有告诉python
是索引还是字符串是元素)i
你确实做到了。
因为 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”中。