从列表中找到单词的位置

时间:2017-01-03 12:41:41

标签: python

您好,我正在为学校做作业,其中一部分涉及在一个句子中显示一个单词的位置,然后我搜索了一下,发现了这个:

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)

1 个答案:

答案 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可以在列表中给出第一个单词位置。