Python 将列表中的项与嵌套for循环进行比较

Python 将列表中的项与嵌套for循环进行比较,python,for-loop,nested,Python,For Loop,Nested,我在一个开放的CSV中有一个URL列表,我已经按字母顺序排列,现在我想遍历该列表并检查重复的URL。在第二步中,应将重复项从列表中删除,但我目前仍停留在检查部分,我已尝试使用嵌套for循环解决该部分,如下所示: for i in short_urls: first_url = i for s in short_urls: second_url = s if i == s: print "duplicate" else:

我在一个开放的CSV中有一个URL列表,我已经按字母顺序排列,现在我想遍历该列表并检查重复的URL。在第二步中,应将重复项从列表中删除,但我目前仍停留在检查部分,我已尝试使用嵌套for循环解决该部分,如下所示:

for i in short_urls:
    first_url = i
    for s in short_urls:
        second_url = s
    if i == s:
       print "duplicate"
    else:
       print "all good"
嵌套for循环工作后,
print
语句显然将被替换。目前,该列表包含一些重复项,但我的嵌套循环似乎无法正常工作,因为它无法识别任何重复项

我的问题是:是否有更好的方法来执行此练习,以及当前嵌套for循环的问题是什么


非常感谢:)

通过构造,您的方法是错误的,即使您正确缩进了
if/else
块。例如,想象一下,为了进行论证,您将
[1,2,3]
作为
短URL
。外部
for
循环将选择
1
与列表进行比较。当它在
for
的内部循环中遇到第一个元素时,它会认为它找到了一个重复的
1
。基本上,每个元素都将被标记为一个重复项,如果您计划删除重复项,那么最终将得到一个空列表

更好的解决方案是调用
set(short\u url)
来获取URL的
set
,并删除重复项。如果您想要删除重复项的
列表
(而不是
),可以将
转换回
列表
,并使用
列表(集(短URL))

换言之:

short_urls = ['google.com', 'twitter.com', 'google.com']
duplicates_removed_list = list(set(short_urls))
print duplicates_removed_list # Prints ['google.com', 'twitter.com']
不在第二个for循环内。你错过了一个缩进

for i in short_urls:
    first_url = i
    for s in short_urls:
        second_url = s
        if i == s:
           print "duplicate"
        else:
           print "all good"
编辑:还可以将数组的每个元素与同一数组的每个元素进行比较。这意味着将位置0处的元素与位置0处的元素进行比较,这显然是相同的。
你需要做的是从第二个for开始,在第一个for到达之后的位置

缩进。如果某个内容与您的循环不在同一级别,那么它就不在循环内。另外,
first\u url=i
的意义是什么?关于这一点,second\u url=s?我已经尝试了您的第一个建议;它导致循环无限地运行。您如何准确地调用
集(短URL)
?我还不确定我是否完全理解它。如果
short\u url
是一个
列表
,您可以直接执行
set(short\u url)
,您将得到原始
列表
集。
set
是一个没有重复项的集合。请参阅我对前面答案的评论:出于某种原因,这样做会导致无限循环。
for i in short_urls:
    first_url = i
    for s in short_urls:
        second_url = s
        if i == s:
           print "duplicate"
        else:
           print "all good"