在Python中解析列表
我在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)
这个方法。