繁体   English   中英

删除列表中的重复元素 [重复]

Removing duplicate elements in a list [duplicate]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这个问题在这里已经有了答案:

这是我已经做了好几个小时的家庭作业。 已经取得了进展,但我已经走到了尽头。 我有一个文本文件,已将其转换为按字母顺序排序的单词列表(包括一些大写单词)。 最后要做的是从列表中删除重复的单词 我找到了关于从列表中删除项目的问题的答案,但没有找到关于删除重复项目的答案。 我已经建立了一个循环——由于我无法理解的原因——只适用于原始列表的一半。

这是我尝试过的代码:

fhand=open('romeo.txt')
data=fhand.read()
data=data.split()
data[0]='but'
data[8]='it'
data[13]='juliet'
data[17]='arise'
data[25]='who'
data.sort()
newlist=[]
for x in data:
    if data[0] == data[1]:
        del data[0]
    elif data[0] != data[1]:
        newlist.append(data[0])
    del data [0]
print(newlist)

原始分割文本文件为: ['but', 'soft', 'what', 'light', 'through', 'yonder', 'window', 'breaks', 'it', 'is', 'the' , '东方', 'and', 'juliet', 'is', 'the', 'sun', 'arise', 'fair', 'sun', 'and', 'kill', 'the', '羡慕','月亮','谁','是','已经','生病','和','苍白','与','悲伤']

预期 output 是: ['已经','和','出现','休息','但是','东方','羡慕','公平','悲伤','是','它',' juliet','kill','light','moon','pale','sick','soft','sun','sun','the','the','the','through' , 'what', 'who', 'window', 'with', 'yonder']

实际 output 是: ['已经','and','arise','breaks','but','east','envious','fair','grief','is','it','朱丽叶','杀死','光']

所以循环做了它应该做的事情,但在“光”之后退出。 想不通这个。

1 个回复

这不是从列表中删除重复项的好方法。 此外,您不应在像这样迭代列表时从列表中删除元素。 考虑改用一个集合。 集合没有排序,但由于您在处理数据之前对数据进行了排序,因此您可以使用sorted将无序集合转换为排序列表。

data = ['but', 'soft', 'what', 'light', 'through', 'yonder', 'window', 'breaks', 'it', 'is', 'the', 'east', 'and', 'juliet', 'is', 'the', 'sun', 'arise', 'fair', 'sun', 'and', 'kill', 'the', 'envious', 'moon', 'who', 'is', 'already', 'sick', 'and', 'pale', 'with', 'grief']

new_data = sorted(set(data))

print(new_data)

Output:

['already', 'and', 'arise', 'breaks', 'but', 'east', 'envious', 'fair', 'grief', 'is', 'it', 'juliet', 'kill', 'light', 'moon', 'pale', 'sick', 'soft', 'sun', 'the', 'through', 'what', 'who', 'window', 'with', 'yonder']

您也可以在没有集合和没有del的循环中执行此操作:

newlist = []

for x in sorted(data):
    if x not in newlist:
        newlist.append(x)
1 删除列表中的所有重复元素[duplicate]

这个问题已经在这里有了答案: 删除列表中的重复项 47个答案 我有一个列表(例如: [1, 2, 2, 3, 4, 3] 1、2、2、3、4、3 [1, 2, 2, 3, 4, 3] ),我只需要保留列表中任何元素的第一个出现(例如:列表应该变成[1, 2 ,3, ...

2018-03-26 18:12:31 2 34   python
3 删除列表中的重复元素

我很感谢这里的帮助。 我正在尝试构建一个程序,该程序删除列表中的重复元素。 这部分很容易。 但是然后我也想删除重复的元素(也可能是列表),如果它是一个列表,那么该列表中的重复元素也应该删除,例如(make-set(list 1 2 3 2(list 1 3 2 4 3 4)(列表1 3 2 ...

4 删除列表中的重复元素

我在编写一些代码时遇到了一些麻烦,但我无法找到错误。 编程语言在方案中,问题如下: 只留下不重复的元素。 例如:(abaaacc) - >(ab) 我写了下面的代码。 对于完整的披露,这是一个家庭作业,但我无法解决它。 谢谢。 ...

6 如何删除 Python 列表中的重复元素

例如在下面的列表中 我无法保留关键字True的出现。 我使用了不同的方法,例如 for 循环来遍历列表中的每个元素,如果新列表中不存在(朴素方法),则将其附加到新列表中,列表理解,内置于 function 中,如 set()。 我得到下面的 output 这是不正确的! 请帮助我解决这个问题我写的代 ...

2021-02-08 18:14:22 1 48   python
7 删除列表中的重复元素Haskell

我的清单是[[String]],看起来像[[“ A1”,“ A2”,“ A3”],[“ A1”,“ A2”,“ B1”],[“ A1”,“ A2” ,“ B2”] .....] 我的代码如下所示 在这种情况下,没有考虑元素的顺序,它们是重复的[“ A1”,“ A2”,“ A3”]和 ...

2013-09-18 05:48:54 2 170   haskell
8 如何在保留顺序的同时删除列表中的重复元素?

我刚刚看到了 Seth Ladd 关于Collections一个简短视频。 Set 只有唯一元素(未排序),但有时我需要一个有序列表,我想删除所有重复项(元素的第二次出现,例如 String 应该从列表中删除) 列表的原始输入: A, B, C, B, D, A应该导致A, B, C, D 。 ...

10 删除列表中的重复元素,Prolog

我想知道是否有任何方法可以删除 prolog 中的重复元素,前提是它们彼此靠近。 目前我只能这样做: 输入: 我得到 output: 但我想像这样看到 output : 有没有办法做到这一点? ...

2020-11-30 11:18:25 2 63   prolog
暂无
暂无

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

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