在Python中解析列表

3 投票
5 回答
6071 浏览
提问于 2025-04-15 21:35

我在Python里有一个列表,里面有以下内容:

name-1

name-2

name-3

name-4

name-1

name-2

name-3

name-4

name-1

name-2

name-3

name-4

我想把列表里除了第一次出现的name-1以外的所有name-1都去掉,最终的列表应该是这样的:

name-1

name-2

name-3

name-4

name-2

name-3

name-4

name-2

name-3

name-4

我该怎么做呢?

5 个回答

2

根据Marcelo的解决方案:

[name for cnt,name in enumerate(names) if (name != names[0] or cnt > 0)]

3

在编程中,有时候我们需要让程序做一些事情,比如计算、显示信息或者处理数据。为了让程序能够顺利运行,我们需要给它一些指令,这些指令就是代码。代码就像是给程序下的命令,让它知道该做什么。

在这个过程中,可能会遇到一些问题,比如程序运行不正常或者出现错误。这时候,我们就需要去查找问题的原因,看看哪里出错了。通常,程序会给我们一些提示,告诉我们哪里出了问题,这些提示叫做错误信息。

解决问题的过程就像是侦探破案,我们需要仔细观察、分析,找到问题的根源,然后进行修复。通过不断地调试和测试,我们可以让程序变得更加稳定和可靠。

总之,编程就像是在和计算机沟通,我们通过代码告诉它该做什么,而解决问题的过程则是不断学习和改进的过程。

def remove_but_first( lst, it):
    first = lst.index( it )
    # everything up to the first occurance of it, then the rest of the list without all it
    return lst[:first+1] + [ x for x in lst[first:] if x != it ]

s = [1,2,3,4,1,5,6]
print remove_but_first( s, 1)
2

假设 name-1 指的是“第一个元素”:

[names[0]] + [n for n in names[1:] if n != names[0]]

补充说明:如果你的最终目标是去掉整个列表中的重复项,那就直接用 set(names) 这个方法。

撰写回答