【发布时间】:2021-06-11 13:57:34
【问题描述】:
为什么下面的代码在我使用列表推导的地方不起作用,但常用的方法却可以?
exams = [1,2,3,1,2,3,4,1,5,1]
repeatedExams = []
# EXCPECTED OUPUT
# repeatedExams = [1,2,3]
# IF I USE repeatedExams.append(i)
repeatedExams = [repeatedExams.append(i) for i in exams if (exams.count(i)>1) and (i not in repeatedExams)]
# OUTPUT
# repeatedExams = [None,None,None]
# IF I ONLY USE i
repeatedExams = [i for i in exams if (exams.count(i)>1) and (i not in repeatedExams)]
# OUTPUT
# repeatedExams = [1,2,3,1,2,3,4,1,5,1]
# WORK
for i in exams:
if exams.count(i) > 1 and i not in repeatedExams:
repeatedExams.append(i)
# OUTPUT
# repeatedExams = [1,2,3]
【问题讨论】:
-
将推导式
append列出为您的新列表;这就是他们的全部目的。append不返回任何内容,因此您的第一种方法不起作用。 -
list(set([x for x in exams if exams.count(x)>1])) -
感谢 @usuario12339314 的需要,它运行良好。
标签: python list output list-comprehension