Фильтровать элементы списка в Python

Мне нужно удалить названия городов 5 или менее символов из списка городов:

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

cities = ["New York", "Shanghai", "Munich", "Tokyo", "Dubai", "Mexico 
City", "São Paulo", "Hyderabad"]
count = 0
loop = 0

print("City List:",cities)

for x in range(len(cities)):
    if len(cities[x]) <= 5:
        cities[x] = 'small'

for x in range(len(cities)):
    if cities[x] == 'small':
        count += 1

while loop < count:
    for x in cities:
        if x == 'small':
            cities.remove(x)
            loop += 1

print("Filtered:",cities)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
110
2

Ответы 2

Вы можете использовать фильтр:

filtered_cities = list(filter(lambda x: len(x) > 5, cities)

Самый короткий путь - понимание списка

cities = [city for city in cityes if len(city) < 6]

Это эквивалентно

cities_filterd = []
for city in cities:
    if len(city) < 6:
        cities_filterd.append(city)

city_filterd будут ли они содержать город с длиной менее 6.

Кратчайший? В глазу мой ответ? : D В лучшем случае они похожи, я бы сказал.

NiVeR 09.06.2018 11:38

Да, вы правы, понимание списков будет считаться питоническим, чем использование фильтров и лямбда-функций, а понимание списков более легко читается.

F. Strothmann 09.06.2018 11:44

Другие вопросы по теме