我在python3中有一个二维列表,看起来像这样...
[
[
'item1',
'item2',
'item3',
'item4'
],
[
'item1',
'item2',
'item3',
'item4'
],
[
'item1',
'item2',
'item3',
'item4'
]
]
我正在尝试创建一个仅包含每个列表的item1和item 4的新列表,因此它看起来像这样。
[
[
'item1',
'item4'
],
[
'item1',
'item4'
],
[
'item1',
'item4'
]
]
我当前正在遍历列表,并使用remove()命令删除元素。
这行得通,但是如果我遇到的情况是有数百种不同的物品,那将是无效的。
有没有一种方法可以复制到新列表,但仅保留每个列表中的[1]和[4]?
答案 0 :(得分:1)
b = [item for x in a for item in x if x.index(item) in [0,3]]
让a作为您的主要列表。这将返回位置0,3的项目。此外,您可以根据需要将其他任何索引添加到该列表中。
答案 1 :(得分:1)
您可以通过两种方式做到这一点,即for
循环或list comprehension
for循环:
new_list = []
for lst in main_list:
new_list.append([lst[0], lst[-1]])
列表理解:
new_list = [[lst[0], lst[-1]] for lst in main_list]
main_list
变量是您的原始列表。
希望这会有所帮助!
答案 2 :(得分:1)
您只需要像这样遍历列表:
result = [[lst[0], lst[3]] for lst in list_2d]
这称为列表理解,这是对列表进行循环的便捷方法。
list_2d
是原始列表。
result
是您想要的。
答案 3 :(得分:1)
这是功能编程方式:
f = lambda x, j0, j1: list(map(lambda i: [x[i][j0], x[i][j1]], range(len(x))))
x = [
[
'item1',
'item2',
'item3',
'item4'
],
[
'item1',
'item2',
'item3',
'item4'
],
[
'item1',
'item2',
'item3',
'item4'
]
]
print(f(x, 0, -1))
# [['item1', 'item4'], ['item1', 'item4'], ['item1', 'item4']]