Python-从lis中提取特定列

2024-05-20 00:01:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含列索引的列表,如下所示:

list1 = [0 ,2]

另一个列表将包含csv文件的文件内容,如下所示:

list2=[["abc", 1, "def"], ["ghi", 2, "wxy"]]

创建一个新列表的最佳方法是:使用list1中包含的列号创建一个只包含list2中的值的列表

newList = [["abc", "def"], ["ghi", "wxy"]]

我很难创建子列表


Tags: 文件csv方法内容列表defabclist2
3条回答
>>> 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']]

如果您对元组列表满意,可以使用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可能有一点性能优势,但它可能很小,不值得担心。

您可以使用List Comprehension

newList = [[each_list[i] for i in list1] for each_list in list2]

相关问题 更多 >