Python - 在列表括号内调用函数。它是如何工作的?

时间:2010-10-18 17:57:04

标签: python list-comprehension

我一直在寻找一种算法来替换列表中的某些内容。例如,用'X'改变所有'0'。

我找到了这段代码,它起作用了:

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

我想知道的是它的原因(我理解代码中的逻辑,而不是为什么编译器会接受它。)

我也在努力在那里插入一个“elif”条件(为了论证,用'Y'改变'1')。

这可能是完整记录的,但我不知道这件事的名称是什么。

2 个答案:

答案 0 :(得分:7)

这种结构称为list comprehension。它们看起来与generator expressions类似,但略有不同。列表推导预先创建一个新列表,而生成器表达式根据需要创建每个新元素。列表理解必须是有限的;发电机可能是“无限的”。

答案 1 :(得分:4)

  

我也在努力在那里插入一个“elif”条件(为了论证,用'Y'改变'1')。

如果要替换多个变量,我会使用字典而不是“elif”。这使您的代码更易于阅读,并且可以轻松添加/删除替换。

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