Какой из них предпочтительнее - line.lower () против word.lower () - PullRequest
2 голосов
/ 28 декабря 2010

Когда мне нужно разбить строку и поместить все слова в список в нижнем регистре, какой из них будет предпочтительнее:

1.)

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

2.)

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

Есть ли влияние на производительность? Имеет ли это какое-то значение (кроме того, что второй короче).

EDIT Добавлен недостающий split().

Ответы [ 6 ]

5 голосов
/ 28 декабря 2010

Может быть, что-то более компактное:

>>> a = "I AM A DEVELOPER"

>>> a.lower().split()
['i', 'am', 'a', 'developer']
4 голосов
/ 28 декабря 2010

Может быть, попытаться list comprehension

[x.lower() for x in line]

вернет список с опущенными словами.Если вы хотите пропустить пробелы:

[x.lower() for x in line if x.strip() != '']
2 голосов
/ 28 декабря 2010

Я не знаю о скорости, но это не делает то, что вы думаете, делает: Это дает вам символы, а не слова.

1 голос
/ 28 декабря 2010

Пока вы называете lower и append для каждого слова, я не думаю, что действительно имеет значение порядок, в котором вы их называете.

0 голосов
/ 28 декабря 2010

Поскольку в другом ответе уже было указано на списки, вот еще один подход:

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

Также, пожалуйста, старайтесь не использовать имена переменных, такие как list, которые уже используются в Python. Это действительно дурной тон и может привести к путанице в любом нетривиальном проекте.

0 голосов
/ 28 декабря 2010

Я предпочитаю:

words = line.lower().split()

это лучше чем:

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

Если n - это количество слов, первое делает n + 1 распределение, тогда как второе делает2n.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...