Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—在列表括号内调用的函数。它是如何工作的?_Python_List Comprehension - Fatal编程技术网

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

Python—在列表括号内调用的函数。它是如何工作的?,python,list-comprehension,Python,List Comprehension,我在寻找一种算法,用另一个替换列表中的某些内容。例如,将所有“0”更改为“X” 我发现了这段代码,它是有效的: list = ['X' if coord == '0' else coord for coord in printready] 我想知道的是为什么这样做(我理解代码中的逻辑,但不理解编译器为什么接受这样做) 我还很难在其中插入一个“elif”条件(为了论证起见,将“1”改为“Y”) 这可能有详细的文档记录,但我不知道这东西叫什么。这种结构称为a。这些看起来很相似,但略有不同。列表理

我在寻找一种算法,用另一个替换列表中的某些内容。例如,将所有“0”更改为“X”

我发现了这段代码,它是有效的:

 list = ['X' if coord == '0' else coord for coord in printready]
我想知道的是为什么这样做(我理解代码中的逻辑,但不理解编译器为什么接受这样做)

我还很难在其中插入一个“elif”条件(为了论证起见,将“1”改为“Y”)


这可能有详细的文档记录,但我不知道这东西叫什么。

这种结构称为a。这些看起来很相似,但略有不同。列表理解预先创建一个新列表,而生成器表达式根据需要创建每个新元素。列表理解必须是有限的;发电机可能是“无限的”

我还很难在其中插入一个“elif”条件(为了论证起见,将“1”改为“Y”)

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

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

“列表理解”。开始谷歌搜索吧。谢谢你的快速回复。我现在会试着更好地理解它。=)更好的是,
[d.get(coord,coord)for coord in printready]
,使用
默认值
参数谢谢您提供的字典提示。这真的很有帮助!