def front_x(words):
first = []
count = 0
for x in words:
count+=1
if x[0] == "x":
first.append(x)
words.remove(x)
print(count)
words = sorted(words)
first = sorted(first)
return first + words
我正在使用以下列表进行测试[" mix"," xanadu"," apple"," aardvark",&# 34; xyz"]和[" bbb"," ccc"," axx"," xzz"," xaa& #34;]由于某种原因,两个列表的计数不同?我是一个麻烦的人,因为出于某种奇怪的原因,这个功能并没有找到" xaa"在第二个测试用例中触发if语句。然而我注意到,即使计数在两者之间也没有关系,我唯一的理论是if语句首先执行,因此计数加法反映了if语句未被触发的次数。
答案 0 :(得分:1)
您被告知“不要更改您正在迭代的列表”,这将解决您的问题。
但是,如果您正在进行的排序是基于单词是否以x
+词汇顺序开头进行排序,那么您可以简化此操作,然后您可以执行以下操作:
>>> a = ["mix", "xanadu", "apple", "aardvark", "xyz"]
>>> sorted(a, key=lambda x: (x[0] != 'x', x))
['xanadu', 'xyz', 'aardvark', 'apple', 'mix']
这是有效的,因为x[0] != 'x'
在0
时相当于x[0] == 'x'
,而在1
时相当于x[0] != 'x'
,而元组排序强制所有x
字前面。
如果您需要计算以x
开头的单词数,那么您可以:
>>> sum(x[0] == 'x' for x in a)
2