我有一个包含许多其他内部列表的列表,其中一些内部列表包含两个值。我想删除内部列表中的所有第二个值。
[['a'], ['b'], ['c', 'd'], ['e'], ['f', 'g']]
我可以使用rsplit(),还是有更好的其他拆分功能?
答案 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']