我一直在寻找一种算法来替换列表中的某些内容。例如,用'X'改变所有'0'。
我找到了这段代码,它起作用了:
list = ['X' if coord == '0' else coord for coord in printready]
我想知道的是它的原因(我理解代码中的逻辑,而不是为什么编译器会接受它。)
我也在努力在那里插入一个“elif”条件(为了论证,用'Y'改变'1')。
这可能是完整记录的,但我不知道这件事的名称是什么。
答案 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]