第一个示例:
my_list = ['apple', 'banana', 'grapes', 'pear']
for c, value in enumerate(my_list, 1):
print(c, value)
另一个示例:
[print(int(x)==sum(int(d)**p for p,d in enumerate(x,1)))for x in[input()]]
x
,d
和p
如何工作?
答案 0 :(得分:1)
因此,这里有两个小问题:
a)
my_list = ['apple', 'banana', 'grapes', 'pear']
for c, value in enumerate(my_list, 1):
print(c, value)
步骤如下:
enumerate(my_list, 1)
将获得一个带有索引的列表,这里的输出是一个枚举对象,如果使用list(enumerate(my_list, 1)
来查看,则为[(1, 'apple'), (2, 'banana'), (3, 'grapes'), (4, 'pear')]
。for
,第一个迭代得到c=1, value='apple'
,第二个迭代得到c=2, value='banana'
... 1 apple 2 banana 3 grapes 4 pear
b)
[print(int(x)==sum(int(d)**p for p,d in enumerate(x,1)))for x in[input()]]
步骤如下:
input
首先需要用户输入,例如输入100
,然后input
会将其视为str
,因此[input()]
返回['100']
for x in [input()]
的{{1}}是x
'100'
,它将处理list comprehension
int(x)==sum(int(d)**p for p,d in enumerate(x,1))
首先将迭代'100',如果使用列表来查看它,则会得到类似(int(d)**p for p,d in enumerate(x,1))
的信息,与示例1相似。然后为每个迭代计算[(1, '1'), (2, '0'), (3, '0')]
,最后使用{ {1}}得到结果,类似于int(d)**p
,结果为sum
。int('1')**1 + int('0')**2 + int('0')**3
当然会输出1
print(int('100')==1
函数调用的返回值始终为False
,因此print
将使新列表为None
。>>> [print(int(x)==sum(int(d)**p for p,d in enumerate(x,1)))for x in[input()]] 100 False [None]
答案 1 :(得分:0)
当您对内置函数(例如enumerate
)有疑问时,最好在Python文档中查找内容。指向该链接的是here。
要进行解释,枚举将帮助您遍历列表中的所有值,并且如果您传入可选参数号(如示例中的1),则它指定要从其进行迭代的起始索引。
枚举返回的内容是索引,然后是存储在列表中该索引处的项目。因此,在您的示例中,c
将成为for循环中的每个索引(1、2、3等)。在您的示例中,value
是存储在列表中该索引处的实际值。
还请记住,列表从索引0开始而不是第一个值1。
答案 2 :(得分:0)
使用 enumerate 时,常见的命名系统是 idx,item 。它可以清楚地表明每个元素代表什么,并且最适合您遵循此命名方案
; AddTwoSum_64.asm - Chapter 3 example.
ExitProcess proto
.data
sum qword 0
.code
main proc
mov rax,5
add rax,6
mov sum,rax
mov ecx,0
call ExitProcess
main endp
end
l = ['a', 'b', 'c'] print([(idx, item) for idx, item in enumerate(l)])
如您所见, idx 代表该项目的索引,而 item 是该项目。