我有一個列表Python-提取特定的列包含列索引如下:從列表
list1 = [0 ,2]
列表的另一個列表將包含一個CSV文件的文件內容如下:
list2=[["abc", 1, "def"], ["ghi", 2, "wxy"]]
什麼可以創建一個新的列表,將只從list2
與包含在list1
即
我有一個很難創建子列表
我有一個列表Python-提取特定的列包含列索引如下:從列表
list1 = [0 ,2]
列表的另一個列表將包含一個CSV文件的文件內容如下:
list2=[["abc", 1, "def"], ["ghi", 2, "wxy"]]
什麼可以創建一個新的列表,將只從list2
與包含在list1
即
我有一個很難創建子列表
您可以使用List Comprehension
: -
newList = [[each_list[i] for i in list1] for each_list in list2]
>>> list1 = [0 ,2]
>>> list2=[["abc", 1, "def"], ["ghi", 2, "wxy"]]
>>> newList = [[l[i] for i in list1] for l in list2]
>>> print newList
[['abc', 'def'], ['ghi', 'wxy']]
如果您正在使用CSV文件時,你不需要重新發明輪子。 看看優秀的csv
模塊。
如果你是幸福的元組的列表,你可以使用operator.itemgetter
import operator
list1 = [0,2]
my_items = operator.itemgetter(*list1)
new_list = [ my_items(x) for x in list2 ]
(或者你可以使用map
這裏):
new_list = map(my_items, list2)
並作爲1班輪:
new_list = map(operator.itemgetter(*list1), list2)
operator.itemgetter
可能與嵌套列表理解相比略有性能優勢,但它可能足夠小,不值得擔心。
你可能告訴過我們你試過的東西,至少在僞代碼中(因此-1)。 –