2024-05-20 00:01:34 发布
网友
我有一个包含列索引的列表,如下所示:
list1 = [0 ,2]
另一个列表将包含csv文件的文件内容,如下所示:
list2=[["abc", 1, "def"], ["ghi", 2, "wxy"]]
创建一个新列表的最佳方法是:使用list1中包含的列号创建一个只包含list2中的值的列表
list1
list2
newList = [["abc", "def"], ["ghi", "wxy"]]
我很难创建子列表
>>> 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
operator.itemgetter
import operator list1 = [0,2] my_items = operator.itemgetter(*list1) new_list = [ my_items(x) for x in list2 ]
(或者您可以在这里使用map):
map
new_list = map(my_items, list2)
作为1行:
new_list = map(operator.itemgetter(*list1), list2)
与嵌套列表理解相比,operator.itemgetter可能有一点性能优势,但它可能很小,不值得担心。
您可以使用List Comprehension:
List Comprehension
newList = [[each_list[i] for i in list1] for each_list in list2]
如果您对元组列表满意,可以使用
operator.itemgetter
(或者您可以在这里使用
map
):作为1行:
与嵌套列表理解相比,
operator.itemgetter
可能有一点性能优势,但它可能很小,不值得担心。您可以使用
List Comprehension
:相关问题 更多 >
编程相关推荐