我正在为我的Python课程开展一个项目,而且我对编码一般都很陌生。我的代码片段之一出现问题。我试图让Python找到单词的每个实例"" (或任何输入词真的,它并不重要。)并在它之后立即返回。我能够在""之后返回单词,但是当我需要它来扫描整个列表时它会在一个实例后停止。
这是我的代码:
the_list=['the']
animal_list=['the', 'cat', 'the', 'dog', 'the', 'axolotl']
for the_list in animal_list:
nextword=animal_list[animal_list.index("the")+1]
continue
print(nextword)
我返回的所有内容都是cat
,而dog
和axolotl
也会弹出。我尝试使用for循环和continue
以使代码经历dog
和axolotl
的相同过程,但它没有用。
答案 0 :(得分:0)
我不清楚你要求的是什么,但我认为你想要的是获取列表animal_list
中的动物,并假设'the'这个词在偶数中,你可以用这个;
animals = [animal for animal in animal_list if animal != 'the']
由于您是初学者,因此前面的代码使用了一种理解,这是一种在没有for循环的情况下迭代循环的pythonic方法,使用for循环的前一代码的等效代码是:
animals = []
for animal in animal_list:
if animal != 'the':
animals.append(animal)
答案 1 :(得分:0)
索引只会获得第一个实例。 典型的pythonic方式是使用列表理解:
[animal_list[i+1] for i,val in enumerate(animal_list) if val=='the']
答案 2 :(得分:0)
list.index
只会找到第一个匹配项,但您可以指定start
和stop
值来跳过其他索引。
现在我们还需要使用try/except
阻止,因为如果找不到匹配项,list.index
将会raise
ValueError
。
animal_list=['the', 'cat', 'the', 'dog', 'the', 'axolotl']
match = 'the'
i = 0
while True:
try:
i = animal_list.index(match, i) + 1 # start search at index i
except ValueError:
break
# can remove this check if certain that your list won't end with 'the'
# otherwise could raise IndexError
if i < len(animal_list):
print(animal_list[i])
但是,如果您不必使用list.index
,我建议您使用以下内容。 (同样可以删除检查列表是否不以'the'
结尾。
for i, item in enumerate(animal_list):
if item == match and i + 1 < len(animal_list):
print(animal_list[i + 1])
或者更紧凑是使用列表理解。这将输出'the'
之后所有项目的列表。
animals = [ animal_list[i + 1] for i, v in enumerate(animal_list)
if v == match and i + 1 < len(animal_list) ]
print(animals)
注意:continue
的使用不正确。当你想要结束循环的当前迭代并继续下一个循环时,使用continue
。例如
for i in range(5):
print(i)
if i == 2:
continue
print(i)
# Output
0
0
1
1
2 # Notice only '2' is printed once
3
3
4
4
答案 3 :(得分:0)
试试这个:
the_list=['the']
animal_list=['the', 'cat', 'the', 'dog', 'the', 'axolotl']
i=0
for i in range(len(animal_list)):
if animal_list[i] in the_list:
nextword=animal_list[i+1]
print nextword
答案 4 :(得分:0)
一种方法是将列表压缩到自身的移位版本:
keyword = 'the'
animal_list=['the', 'cat', 'the', 'dog', 'the', 'axolotl']
zipped = zip(animal_list, animal_list[1:])
# zipped contains [('the', 'cat'), ('cat', 'the'), ('the', 'dog') etc.]
found_words = [after for before, after in zipped if before == 'the']
这将处理一个以'the'结尾而不会引发错误的列表(最终'the'将被忽略)。
答案 5 :(得分:0)
这是一种非常UN-PYTHONIC的方式......但也许它会帮助你理解索引:
animal_list = ['the', 'cat', 'the', 'dog', 'the', 'axolotl']
index=0
for x in animal_list:
if x == "the":
print(animal_list[(index + 1)])
index +=1
答案 6 :(得分:0)
the_word = 'the'
animal_list = ['the', 'cat', 'the', 'dog', 'the', 'axolotl']
# Iterate through animal_list by index, so it is easy to get the next element when we find the_word
for i in range(len(animal_list) - 1):
if animal_list[i] == the_word: # if the current word == the word we want to find
print(animal_list[i+1]) # print the next word
我们不想检查animal_list中的最后一个元素。这就是我从animal_list的长度中减去1的原因。这样我的值将为0,1,2,3,4。