哪一个更喜欢 - line.lower()与word.lower()

时间:2010-12-28 14:49:02

标签: python coding-style

当我需要拆分一行,并将列表中的所有单词都设为小写时,哪一个是首选方式:

1)

    list = []
    for word in line.split():
        word = word.lower()
        list.append(word)

2。)

    list = []
    for word in line.lower().split():
        list.append(word)

是否有任何性能影响?它实际上是否有任何区别(第二个更短)。

修改 添加了缺少的split()

6 个答案:

答案 0 :(得分:5)

可能更紧凑的东西:

>>> a = "I AM A DEVELOPER"

>>> a.lower().split()
['i', 'am', 'a', 'developer']

答案 1 :(得分:4)

也许试试list comprehension

[x.lower() for x in line]

将返回一个包含降低单词的列表。如果你想省略空格:

[x.lower() for x in line if x.strip() != '']

答案 2 :(得分:2)

我不知道速度,但这不符合你的想法:for word in line.lower()。它会产生你的角色,而不是文字。

答案 3 :(得分:1)

只要您为每个单词调用lowerappend,我认为您调用它们的顺序并没有任何不同。

答案 4 :(得分:0)

我的偏好是:

words = line.lower().split()

这比:

更好
words = [word.lower() for word in line.split()]

如果n是单词数,则第一个进行n + 1个分配,而第二个进行2n。

答案 5 :(得分:0)

由于列表理解已在另一个答案中指出,这是另一种方法:

lst=map(lambda x: x.lower(),line)

另外,请尽量不要使用已在Python中使用的list等变量名称。这是非常糟糕的形式,并且会在任何非平凡的项目中造成很多混乱。