unknown_list = ["toby", "James", "kate", "George", "James", "rick", "Alex", "Jein", "Alex", "Alex", "George", "Jein", "kate", "medelin"]
for i in range(len(unknown_list)):
item = unknown_list[i]
unknown_list[i] = item.replace(item[0], item[0].upper())
x = 0
for b in range(0, len(unknown_list)):
if unknown_list[b] in unknown_list[b+1:]:
unknown_list.remove(unknown_list[b])
x += 1
print(x)
print(unknown_list)
我很困。第9行有错误。我需要从列表中删除重复项(我无法使用尚未学习的功能,这就是为什么我要编写这样的代码)
答案 0 :(得分:1)
这是一种更简单的方法。 有一个内置的函数叫做set
print(list(set(unknown_list)))
output:
['Jein', 'Alex', 'James', 'toby', 'George', 'rick', 'medelin', 'kate']
答案 1 :(得分:0)
这是单线的:list(set(source_list))将解决问题。
集合是不可能重复的东西。
答案 2 :(得分:0)
发生索引错误是因为在n项列表中有n-1个索引(因为我们从list [0]开始)
unknown_list = ["toby", "James", "kate", "George", "James", "rick", "Alex", "Jein", "Alex", "Alex", "George", "Jein", "kate", "medelin"]
for i in range(len(unknown_list)):
item = unknown_list[i]
unknown_list[i] = item.replace(item[0], item[0].upper())
a=1
for b in range (0, len(unknown_list)-1):
if unknown_list[b] in unknown_list[a:]:
unknown_list.remove(unknown_list[b])
a +=1
print(unknown_list)
尽管迭代了x = 0,但您从未使用过它。但是,这也会从列表中删除所有名称,而不会保留第一个名称(因此,只剩下一次出现在列表中的名称)。
一种以所有唯一名称列表结尾的方法是创建一个空列表,然后附加不同的名称:
unknown_list = ["toby", "James", "kate", "George", "James", "rick", "Alex", "Jein", "Alex", "Alex", "George", "Jein", "kate", "medelin"]
for i in range(len(unknown_list)):
item = unknown_list[i]
unknown_list[i] = item.replace(item[0], item[0].upper())
distinct =[]
for i in unknown_list:
if i not in distinct:
distinct.append(i)
答案 3 :(得分:0)
这应该有效:
unknown_list = ["toby", "James", "kate", "George", "James", "rick", "Alex", "Jein", "Alex", "Alex", "George", "Jein", "kate", "medelin"]
for i in range(len(unknown_list)):
unknown_list[i] = unknown_list[i].upper()
print (unknown_list)
i = 0
n = len(unknown_list)
while i < n:
item = unknown_list[i]
if item in unknown_list[i+1:]:
unknown_list.remove(item)
n = n - 1
else:
i = i + 1
print (unknown_list)
说明:
从不从for
循环内的列表中删除元素。 从不。几乎可以肯定会遇到index out of range
错误。而且即使您没有至少一半的元素也会被跳过。
一种解决方案是使用while
循环。由于列表元素在移除后被向左移动,因此窍门是仅前进在没有元素被移除的情况下i
索引。另一方面,如果删除了一个元素,您将保持原样(unknown_list[i]
元素将成为要比较的移位元素),当然,您会减少列表中的元素总数({{1} }。
请确保您了解删除某个项目后列表发生了什么。您可以通过查看结果列表中元素的顺序来找出答案:
n
与输入列表相比:
['TOBY', 'JAMES', 'RICK', 'ALEX', 'GEORGE', 'JEIN', 'KATE', 'MEDELIN']