Python - 列表括号内调用函数,如何实现?

4 投票
2 回答
2817 浏览
提问于 2025-04-16 05:41

我在找一个算法,想把列表里的某些内容替换成其他的东西。比如,把所有的'0'换成'X'。

我找到了一段代码,它能实现这个功能:

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

我想知道的是,这段代码为什么能工作(我明白代码的逻辑,但不明白编译器为什么能接受这个)。

我还在想怎么在里面加一个“elif”条件(为了举例,想把'1'换成'Y')。

这可能有很多文档说明,但我不知道这个东西叫什么。

2 个回答

4

我也在努力把一个“elif”条件放进去(为了说明问题,把‘1’换成‘Y’)。

如果你要替换多个变量,我建议用字典,而不是用“elif”。这样可以让你的代码更容易阅读,而且添加或删除替换也很简单。

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

这个结构叫做 列表推导式。它们看起来和 生成器表达式 有点像,但其实有些不同。列表推导式会一次性创建一个新的列表,而生成器表达式则是根据需要一个一个地生成新的元素。列表推导式的数量是有限的,而生成器可以是“无限”的。

撰写回答