Иногда нам нужен список с последовательными целыми числами, мы можем использовать синтаксис понимания списка для генерации списка с последовательными целыми числами, такими как:
a = [ x for x in range(0,100) ] # a = [0, 1, 2, ... 99]
Если нам нужен список с некоторыми условиями, как даже номера. Мы также можем использовать синтаксис понимания списка для генерации списка даже номера, например:
a = [ x for x in range(0, 100) if x % 2 == 0] # a = [0, 2, 4, ... 98]
Другим случаем нам нужен список с кортежными корпусами, как координаты с двумя измерениями:
a = [ (x, y) for x in range(1, 6) for y in range(3, 6) ] # a = [ (1, 3), (1, 4), (1, 5), (2, 3), (2, 4) ... ] ## total 5 * 3 items
Но если нам нужны пары значений с индексом с X, y Перемещение одновременно, мы можем использовать Zip:
a = [ x for x in zip(range(1, 6), range(3, 6)) ] # a = [(1, 3), (2, 4), (3, 5)] ## total 3 items, because the range(3, 6)
Такое же использование со списком понимания, набор и словарь также имеет их понимание.
s = { v for v in 'ABCDE' } # s = {'D', 'C', 'A', 'B', 'E'}
С некоторым условием:
s = { v for v in 'ABCDE' if v not in 'BC' } # {'D', 'E', 'A'}
s = {key: val for key, val in enumerate('ABCDEF')} # s = {0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E', 5: 'F'}
С некоторым условием:
s = {key: val for key, val in enumerate('ABCDEF') if val not in 'CD'} # s = {0: 'A', 1: 'B', 4: 'E', 5: 'F'}
С некоторым состоянием (более сложным):
s = {key: val for key, val in enumerate('ABCDEF') if (val not in 'CD') & (key != 0)} # s = {1: 'B', 4: 'E', 5: 'F'}
После этого примера мы можем понять понимание списка для генерации списка и других типов данных.
Это просто, но важно!
Счастливое кодирование!
Ссылка: https://en.wikipedia.org/wiki/List_comprehension
Оригинал: “https://dev.to/timhuang/list-comprehension-in-python-5595”