Python - функции, вызываемые внутри скобки списка.Как это работает? - PullRequest
4 голосов
/ 18 октября 2010

Я искал алгоритм для замены одного содержимого в списке другим.Например, изменив все «0» на «X».

Я нашел этот фрагмент кода, который работает:

 list = ['X' if coord == '0' else coord for coord in printready]

Что я хотел бы знать, это именно то, почему это работает(Я понимаю логику в коде, но не то, почему компилятор принимает это.)

Я также пытаюсь вставить туда условие "elif" (ради аргумента, меняя '1'с 'Y').

Это, вероятно, полностью задокументировано, но я понятия не имею, как называется эта вещь.

Ответы [ 2 ]

7 голосов
/ 18 октября 2010

Эта конструкция называется списком . Они похожи на выражения генератора , но немного отличаются. Понимания списка создают новый список заранее, в то время как выражения генератора создают каждый новый элемент по мере необходимости. Понимание списка должно быть конечным; генераторы могут быть «бесконечными».

4 голосов
/ 18 октября 2010

Я также пытаюсь вставить туда условие "elif" (ради аргумента, изменив '1' на 'Y').

Если вы 'собираясь заменить несколько переменных, я бы использовал словарь вместо "elif".Это облегчает чтение вашего кода и позволяет легко добавлять / удалять подстановки.

d = {'0':'X', '1':'Y', '2':'Z'}
lst = [d[coord] if coord in d else coord for coord in printready]
...