从列表中提取特定列

2024-05-19 23:02:45 发布

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

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

list1 = [0 ,2]

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

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

创建一个新列表的最佳方法是什么?该列表只包含来自list2的值,列号包含在list1中,即

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

我很难创建子列表


Tags: 文件csv方法内容列表defabclist2
3条回答

您可以使用List Comprehension:-

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

如果您对元组列表感到满意,可以使用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可能比嵌套列表理解有一点性能优势,但它可能足够小,不值得担心

>>> 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']]

相关问题 更多 >