有没有办法跳过这个for循环中的第一次迭代,这样我就可以在for循环中放入一个for循环,以便将列表中的第一个元素与其余元素进行比较。
from collections import Counter
vowelCounter = Counter()
vowelList = {'a','e','i','o','u'}
userString = input("Enter a string ")
displayed = False
for letter in userString:
letter = letter.lower()
if letter in vowelList:
vowelCounter[letter] +=1
for vowelCount1 in vowelCounter.items():
char, count = vowelCount1
for vowelCount2 in vowelCounter.items(STARTING AT 2)
char2, count2 = vowelCount2
if count > count2 : CONDITION
语法如何用于此?我只需要做一个5深的For循环。所以下一个将从3开始,然后从4开始,然后是5,正确的打印语句取决于条件。 感谢
答案 0 :(得分:4)
你可以这样做:
for vowelCount2 in vowelCounter.items()[1:]:
除了第一个元素之外,这将为您提供vowelCounter.items()
的所有元素。
[1:]
表示您正在对列表进行切片,这意味着:从索引1
开始,而不是从索引0
开始。因此,您要从列表中排除第一个元素。
如果您希望索引依赖于前一个循环,您可以这样做:
for i, vowelCount1 in enumerate(vowelCounter.items()):
# ...
for vowelCount2 in vowelCounter.items()[i:]:
# ...
这意味着您将i
指定为起始索引,它取决于vowelCount1
的索引。每次迭代enumerate(mylist)
时,函数mylist
都会为您提供索引和列表元素。
答案 1 :(得分:2)
看起来你想要的是将每个计数与其他每个计数进行比较。虽然您可以按照自己的建议行事,但更简洁的方法可能是使用itertools.combinations
:
for v1,v2 in itertools.combinations(vowelCounter, 2):
if vowelCounter[v1] > vowelCounter[v2]:
# ...
这将迭代所有元音对以进行比较。这样做,您可能还想检查vowelCounter[v2] > vowelCounter[v1]
是否会再次看到这两个(这适用于此方法或嵌套for循环方法)。或者,您可以使用具有相同参数的itertools.permutations
函数,只需一次检查即可。
答案 2 :(得分:2)
要跳过迭代,您可以使用continue
关键字,例如:
list = [1,2,3,4,5,6,7,8,9,10]
for value in list:
if value == list[0]:
continue
print(value)
会给你:
2
3
4
5
6
7
8
9
10
我希望这能回答你的问题。
答案 3 :(得分:0)
按照其他几个人的建议用[1:]切片列表会创建一个新数组。使用带有itertools.islice()
的切片迭代器更快更经济from itertools import islice
for car in islice(cars, 1, None):
# do something