У меня есть простой пример, который я составил. Я думал, что было возможно объединить операторы if и for с минимальными усилиями в Python. Данный:

sublists = [number1, number2, number3]

for sublist in sublists:
    if sublist:
        print(sublist)

Я думал, что смогу сжать цикл for:

for sublist in sublists if sublist:

Но это приводит к неверному синтаксису. Я не слишком конкретен в этом примере, я просто хочу метод с одной подкладкой простой оператор if с циклами.

1
feyd 21 Авг 2018 в 11:39

3 ответа

Лучший ответ

Если вы хотите отфильтровать все пустые подсписки из ваших исходных подсписков, вам нужно будет сделать что-то вроде ниже. это даст вам все непустые подсписки.

print([sublist for sublist in sublists if sublist])

* отредактировано для синтаксиса

3
feyd 21 Авг 2018 в 08:55

Сразу решил это в переводчике сразу после того, как я написал.

for x in ( x for x in sublists if x ):

Не так чисто, как хотелось бы, вложенное выражение if, на мой взгляд, более читабельно. Я открыт для других предложений, если есть более чистый путь.

1
feyd 21 Авг 2018 в 08:42

Я думаю, что вы не можете упростить синтаксис до однострочного в python, но на самом деле вам придется печатать все цепочки строк для циклов и операторов if.

Исключением являются списки (см. Здесь в разделе 5.1.3). Их можно использовать для создания новых списков из списков. Пример:

test_list = ["Blue Candy", "Apple", "Red Candy", "Orange", "Pear", "Yellow Candy"]
candy_list = [x for x in test_list if "Candy" in x]
2
cripcate 21 Авг 2018 в 08:46
51944790