繁体   English   中英

如何删除列表的第二个元素

[英]How can I delete second element of list

我得到一个像这样的列表[[3,5],[5,3],[5,4],[0,2],[1,4],[1,2]]

所以我想删除[5,4][1,2]因为列表的第一个数字为[5,3][1,4]

所以我尝试了

  1. 追加小清单
  2. 反转清单
  3. 删除清单

但我不知道如何访问[5,4]和[1,2]

>>> a=[[3,5],[5,3],[5,4],[0,2],[1,4],[1,2]]
>>> a.reverse()
>>> a.remove()
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: remove() takes exactly one argument (0 given)
>>> a.remove(5)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: list.remove(x): x not in list

使用set跟踪访问的内容,仅在尚未访问的情况下添加条目:

lst = [[3,5],[5,3],[5,4],[0,2],[1,4],[1,2]]

seen = set()
print([x for x in lst if not (x[0] in seen or seen.add(x[0]))])

# [[3, 5], [5, 3], [0, 2], [1, 4]]

我的答案与奥斯丁的答案几乎相同。

a=[[3,5],[5,3],[5,4],[0,2],[1,4],[1,2]]
dct={}
for x,y in a:
    if x not in dct:
        dct[x]=y 
print(list(dct.items()))

使用itertools.groupby

[list(v)[0] for _,v in itertools.groupby(l,key=lambda x: x[0]) ]

[[3, 5], [5, 3], [0, 2], [1, 4]]

如果可以使用pandas groupby

l=[[3, 5], [5, 3], [5, 4], [0, 2], [1, 4], [1, 2]]

df=pd.DataFrame(l).groupby(0).first().reset_index().values.tolist() 

 [[0, 2], [1, 4], [3, 5], [5, 3]]

要顺序

sorted( df, key=lambda x : l.index(x))

[[3, 5], [5, 3], [0, 2], [1, 4]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM