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

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

这是我尝试过的代码:

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)

原始的拆分文本文件为: [“但是”,“软”,“什么”,“轻”,“通过”,“远处”,“窗口”,“中断”,“它”,“是”,“该” ,“东部”,“和”,“朱丽叶”,“是”,“该”,“太阳”,“升起”,“公平”,“太阳”,“和”,“杀死”,“该”,“羡慕”,“月亮”,“谁”,“是”,“已经”,“生病”,“和”,“苍白”,“有”,“悲伤”]

预期输出为: [“已经”,“与”,“升起”,“休息”,“但是”,“东部”,“羡慕”,“公平”,“悲伤”,“是”,“它”,“朱丽叶”,“杀死”,“轻”,“月亮”,“苍白”,“病”,“软”,“太阳”,“太阳”,“该”,“该”,“该”,“贯穿” ,“什么”,“谁”,“窗口”,“有”,“更多”]

实际输出为: [“已经”,“与”,“升起”,“休息”,“但是”,“东部”,“羡慕”,“公平”,“悲痛”,“是”,“它”,“ juliet”,“ kill”,“ light”]

因此,循环会执行应有的操作,但在“点亮”后退出。 无法解决这个问题。

#1楼 票数:2

这不是从列表中删除重复项的好方法。 同样,在迭代列表时,您不应从列表中删除元素。 考虑使用集合。 集没有排序,但是由于在处理数据之前先对数据进行排序,因此可以使用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)

输出:

['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)

  ask by Mark Schacter translate from so

未解决问题?本站智能推荐:

3回复

(Python)我需要删除列表中的重复元素(使用删除功能;避免类型转换)。 试图确定为什么我的解决方案不正确

规范:我想使用 remove 函数(在列表中)并且我更愿意避免类型转换。 错误: if l[g]==l[i]: IndexError:列表索引超出范围 我知道以前用户也问过类似的问题。 由于其中不存在上述限制,我想请您将此视为一个单独的问题。 谢谢!
5回复

用python中的重复元素减去2个列表

您好,我想知道如何在python中通过重复元素而不是值减去2个列表。 因此,如果在ListA中找到重复的ListB值,则我们将其减去,然后ListC将在ListA中返回非重复的值。 用数学写的话将是: ListC = ListA-(ListA∩ListB) (我不想
2回复

删除列表中的后续重复项

我下面有一个清单。 而我试图得到 排列顺序很重要。
3回复

考虑从列表 python 列表中删除重复的一个元素

我基本上有一个像这样的列表: 我想删除索引 [0] 中包含重复值的列表。 另外,我总是需要有索引 [1] = '20' 的列表,在本例中为['1348562275', '20'] 。 所以我想要的清单是: 有谁知道我该怎么做?
2回复

Python:汇总列表中的立即重复项[duplicate]

这个问题已经在这里有了答案: 在python中,如何根据键(相邻组)将元素分组在一起? 1个答案 假设您有一个如下列表: [1,1,1,2,3,1,1,5,6,6,10] 我想使用标准的Python库(即,不是numpy)将所有立即重复项加在一起。
1回复

从列表中删除重复的元组

考虑以下元组列表。 在此列表中,我具有与(1,31)和(31,1)类似的值。 因此,我需要从x创建一个仅包含唯一值的列表。 如何做到这一点? 天真的,我尝试通过基于x的条件创建新列表来解决此问题,如果条件是元组中的第一个值大于第二个,则不要将值添加到列表中,否则请添加值。 但是,
1回复

如何从三维列表中删除重复项?

我在写什么代码时遇到一些问题,这些问题使我可以使用列表理解功能从三维列表中删除重复项? 这是我下面的列表和示例。 df = [[[3, 7, 9, 28],[3, 7, 9, 28],[3, 7, 9, 28],[3, 7, 17, 28],[7, 25, 27, 28], [7, 17,
2回复

如何从python列表中删除重复的组合元组?

我有一个包含元组的列表,如下所示: 预期(独特组合) 我在下面试过 但是没有得到想要的输出。 这里有什么帮助吗?