我對Python相當陌生,在解決如何將列表理解應用於嵌套列表的一部分(特別是在索引級別)時遇到了困難。嵌套列表和列表解析
舉例來說,如果我有以下幾點:
my_list = [[1,2], [3,7], [6,9], [4,3]]
new_list = [[i*2 for i in sublist] for sublist in my_list]
我怎麼會改變我的列表中理解到只適用於操作,以每個子表的索引1?我嘗試了很多,沒有成功。
我對Python相當陌生,在解決如何將列表理解應用於嵌套列表的一部分(特別是在索引級別)時遇到了困難。嵌套列表和列表解析
舉例來說,如果我有以下幾點:
my_list = [[1,2], [3,7], [6,9], [4,3]]
new_list = [[i*2 for i in sublist] for sublist in my_list]
我怎麼會改變我的列表中理解到只適用於操作,以每個子表的索引1?我嘗試了很多,沒有成功。
你的意思是這樣的:
my_list = [[1,2], [3,7], [6,9], [4,3]]
new_list = [sublist[0]*2 for sublist in my_list]
Output:
new_list == [2, 6, 12, 8]
也,你忘了把你的子列表之間的逗號(在我的答案固定)
我假設通過「指數1」你的意思是第一元件。
如果您實際上是指第二項(索引1),您將使用sublist[1]
而不是sublist[0]
。
您是否正在尋找?
>>> my_list = [[1,2], [3,7], [6,9], [4,3]]
>>> [[sublist[0] * 2, sublist[1]] for sublist in my_list]
[[2, 2], [6, 7], [12, 9], [8, 3]]
編輯:上述解決方案將很好地擴展,如果你有很多元素的子列表。如果這是你的情況下,另一種可能是使用映射:
>>> my_list = [[1,2], [3,7], [6,9], [4,3]]
>>> def double_first(list_):
... list_[0] *= 2
... return list_
...
>>> map(double_first, my_list)
[[2, 2], [6, 7], [12, 9], [8, 3]]
EDIT2:在我的第一個編輯的解決方案允許實現任何類型的子列表操作的,但如果操作是基本的和只依賴於子列表的索引,Dan's solution將執行得更快。
HTH!
有沒有在你的代碼中沒有的條件。請說明您希望爲此列表獲得什麼樣的輸出(其中包含語法錯誤,順便說一句)。 –