for循环中的加法或IF?

时间:2017-06-15 03:11:16

标签: python for-loop if-statement

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语句未被触发的次数。

1 个答案:

答案 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