您好,我正在为学校做作业,其中一部分涉及在一个句子中显示一个单词的位置,然后我搜索了一下,发现了这个:
for i in [i for i,x in enumerate(list, start=1) if x == word]:
print (i)
但是,我不明白 这是如何运作的,所以有人可以将其分解并向我解释
如果这有助于这是我的部分代码的剩余代码:
list = ["apple", "banana", "carrot","pear"]
print (list)
word = input("Enter a word from this list: ")
for i in [i for i,x in enumerate(list, start=1) if x == word]:
print (i)
答案 0 :(得分:1)
首先,不应将list
用作变量,因为list
是默认的Python函数之一。如果这样做,list()
函数(也是一种类型)将替换为本地范围内的变量。所以我将其重命名为alist
。
alist = ["apple", "banana", "carrot", "pear"]
以下陈述是理解列表:
result = [i for i, x in enumerate(alist, start=1) if x == word]
这个理解列表可以这样写:
result = []
for i, x in enumerate(alist, start=1):
if x == word:
result.append(i)
例如:
>>> alist = ["apple", "banana", "carrot", "pear"]
>>> word = "carrot"
>>> [i for i, x in enumerate(alist, start=1) if x == word]
[3]
此理解列表返回单词" carrot"的所有位置。在[" apple"," banana"," carrot"," pear"]。
循环:
for i in [i for i, x in enumerate(alist, start=1) if x == word]:
print(i)
难以复杂,因为它会迭代理解列表。
您可以这样简化:
print([i for i, x in enumerate(alist, start=1) if x == word])
或者:
for i, x in enumerate(alist, start=1):
if x == word:
print(i)
注意:alist.index(word) + 1
可以在列表中给出第一个单词位置。