删除另一个列表中列表中的第二个值

时间:2018-06-08 07:35:47

标签: python python-3.x

我有一个包含许多其他内部列表的列表,其中一些内部列表包含两个值。我想删除内部列表中的所有第二个值。

[['a'], ['b'], ['c', 'd'], ['e'], ['f', 'g']]

我可以使用rsplit(),还是有更好的其他拆分功能?

4 个答案:

答案 0 :(得分:6)

如果你不关心就地做这件事:

>>> outer = [['a'], ['b'], ['c', 'd'], ['e'], ['f', 'g']]
>>> outer = [inner[:1] for inner in outer]
>>> outer
[['a'], ['b'], ['c'], ['e'], ['f']]

我使用列表推导创建一个新列表,其中包含原始内部列表中一个元素的切片。

如果您需要就地进行:

for inner in outer:
    if len(inner) > 1:
        del inner[1]

答案 1 :(得分:1)

如果你想绘制元素并删除它们,你可以使用pop方法:

list_list = [['a'], ['b'], ['c', 'd'], ['e'], ['f', 'g']
for my_list in list_list:
    if len(my_list) > 1:
        my_list.pop(1)

编辑:我的变量名称的错误选择

答案 2 :(得分:1)

另一种方法是使用地图功能

alist = [['a'], ['b'], ['c', 'd'], ['e'], ['f', 'g']]
reducedlist = list(map((lambda x: x[:1]), alist))
print(reducedlist)

这是从现有的创建新列表。迭代列表并删除将是最好的方法,如果你想就地做

答案 3 :(得分:0)

实现目标的另一种方式:

big_list = [['a'], ['b'], ['c', 'd'], ['e'], ['f', 'g']]
big_list = [sub_list[0] for sub_list in big_list]
print(my_list)

输出:
['a', 'b', 'c', 'e', 'f']

或者:

big_list = [['a'], ['b'], ['c', 'd'], ['e'], ['f', 'g']]
new_list = list()

for item in big_list:
    new_list.append(item[0])

print(new_list)

输出:
['a', 'b', 'c', 'e', 'f']