2010-10-18 46 views
3

我正在尋找一種算法來替換列表中的某些內容。例如,用'X'改變所有'0'。Python - 在列表括號內調用函數。它是如何工作的?

我發現這段代碼,它的工作原理:(我明白,在代碼中的邏輯,只是沒有爲什麼編譯器接受這一點)

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

我想知道究竟是什麼,爲什麼這個工程

我也在努力在那裏插入一個「elif」條件(爲了參數,用'Y'改變'1')。

這可能是徹底的記錄,但我不知道這個東西被稱爲。

+3

「List Comprehension」。開始Google搜索。 – 2010-10-18 17:57:57

回答

7

這種結構被稱爲list comprehension。這些看起來類似於generator expressions,但略有不同。列表解析首先創建一個新列表,而生成器表達式根據需要創建每個新元素。列表理解必須是有限的;發電機可能是「無限」的。

+0

感謝您的快速回答。現在嘗試並更好地理解它。 =) – Roughmar 2010-10-18 18:03:42

3

我也在努力在那裏插入一個「elif」條件(爲了參數,用'Y'改變'1')。

如果您要替換多個變量,我會使用字典而不是「elif」。這使得您的代碼更易於閱讀,並且很容易添加/刪除替換。

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

更好的是,''d.get(coord,coord)for coord in printready]',使用'default'參數 – Daenyth 2010-10-18 18:51:26

+0

謝謝你的字典提示。這真的很有幫助! – Roughmar 2010-10-20 13:55:27

相關問題