在python中删除列表中的重复数字
我只想简单的列表,删除重复的数字在python中删除列表中的重复数字,python,Python,我只想简单的列表,删除重复的数字 a = [2,3,4,4,4,4,5,6,7,8,9,9,9,9,0] m = [] def single_digit_list(a): return [m.append(x) for x in a if x not in m] 打印新列表,单数列表a 我希望新列表给了我列表中的一个数字,但没有重复,但我得到了以下输出 新列表[无,无,无,无,无,无,无,无,无,无] 我不明白发生了什么事 简单了解代码中的错误使用set删除重复项: m=set(a)
a = [2,3,4,4,4,4,5,6,7,8,9,9,9,9,0]
m = []
def single_digit_list(a):
return [m.append(x) for x in a if x not in m]
打印新列表,单数列表a
我希望新列表给了我列表中的一个数字,但没有重复,但我得到了以下输出
新列表[无,无,无,无,无,无,无,无,无,无]
我不明白发生了什么事
简单了解代码中的错误使用set删除重复项:
m=set(a)
如果希望输出为列表,请执行以下操作:
m=list(set(a) )
您的代码很好。您只需返回m…而不是返回append的返回值…对于ex,print m.append10将不打印任何内容,这实际上是append的返回值,您没有打印m 您可以按如下方式修改代码以返回列表:
a = [2,3,4,4,4,4,5,6,7,8,9,9,9,9,0]
def single_digit_list(a):
m = []
[m.append(x) for x in a if x not in m]
return m #you have appended elements to m
使用“设置”删除重复项:
m=set(a)
如果希望输出为列表,请执行以下操作:
m=list(set(a) )
您的代码很好。您只需返回m…而不是返回append的返回值…对于ex,print m.append10将不打印任何内容,这实际上是append的返回值,您没有打印m 您可以按如下方式修改代码以返回列表:
a = [2,3,4,4,4,4,5,6,7,8,9,9,9,9,0]
def single_digit_list(a):
m = []
[m.append(x) for x in a if x not in m]
return m #you have appended elements to m
您正在尝试返回一个列表列表,其中所有列表均为空。 这是因为m.append不返回任何内容,而您正试图创建m.append返回内容的列表 只需按照以下方式操作:
def single_digit_list(a):
m = []
for x in a:
if x not in m:
m.append(x)
return m
>>> print single_digit_list([2,3,4,4,4,4,5,6,7,8,9,9,9,9,0])
[2,3,4,5,6,7,8,9,0]
您正在尝试返回一个列表列表,其中所有列表均为空。 这是因为m.append不返回任何内容,而您正试图创建m.append返回内容的列表 只需按照以下方式操作:
def single_digit_list(a):
m = []
for x in a:
if x not in m:
m.append(x)
return m
>>> print single_digit_list([2,3,4,4,4,4,5,6,7,8,9,9,9,9,0])
[2,3,4,5,6,7,8,9,0]
如果列表已分组,则可以使用
此解决方案不会破坏元素的顺序,而是转换为集合。如果列表已分组,则可以使用
此解决方案不会破坏元素的顺序,而是转换为集合。获得无值列表的原因是: 列表理解用于根据列表理解中给定表达式的返回生成列表。 例如:[列表中项目的表达式,如果有条件] 因此,在您的例子中,您正在将一个项目追加到一个列表中,如果项目追加成功,则在追加该项目后返回None 例如: 因此,在列表理解结束时,列表m得到了正确的唯一元素列表,但返回了理解生成的列表,它是一个无值列表 结论: 您可以通过返回m的值而不是列表理解的结果来解决这个问题 或者,下面是另一个使用字典键的简单解决方案:
>>> a = [2,3,4,4,4,4,5,6,7,8,9,9,9,9,0]
>>> dict.fromkeys(a).keys()
[0, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
您得到无值列表的原因是: 列表理解用于根据列表理解中给定表达式的返回生成列表。 例如:[列表中项目的表达式,如果有条件] 因此,在您的例子中,您正在将一个项目追加到一个列表中,如果项目追加成功,则在追加该项目后返回None 例如: 因此,在列表理解结束时,列表m得到了正确的唯一元素列表,但返回了理解生成的列表,它是一个无值列表 结论: 您可以通过返回m的值而不是列表理解的结果来解决这个问题 或者,下面是另一个使用字典键的简单解决方案:
>>> a = [2,3,4,4,4,4,5,6,7,8,9,9,9,9,0]
>>> dict.fromkeys(a).keys()
[0, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
感谢您的快速回答,但我只想知道代码中的错误您的代码是好的。您只需返回m…而不是返回append的返回值…例如,打印a.append10将不打印任何内容,这实际上是append的返回值,您没有打印a.listseta可能是最好的方法。不过,使用列表理解来运行命令并扔掉它并不是什么好办法。谢谢你的快速回答,但我只想知道代码中的错误你的代码是好的。你只需要返回m…而不是返回append的返回值…例如,print a.append10将不打印任何实际上是append的返回值,您没有打印a。listseta可能是最好的方法。不过,仅仅使用列表理解来运行命令并将其扔掉并不是什么好办法。我更新了答案以回答您的问题列表。append不会返回任何内容。所以m.append结果的列表将是一个无的列表。如果x不在m中,请尝试[m.appendx,x[1]代表a中的x]。LC有副作用是不好的。我更新了我的答案以回答您的问题列表。append不会返回任何内容。所以m.append结果的列表将是一个无的列表。如果x不在m中,请尝试[m.appendx,x[1]代表a中的x]。在LC中产生副作用是不好的。感谢您的详细解释,原因是m.append。所以您能告诉我其他方法吗,因为我只想学习代码中的combine for and if语句。@user3459261,如我在上面的回答中所示,或者如user3建议的第一个答案感谢您的详细解释,原因是m.append。所以您能告诉我其他方法吗?因为我只想学习代码中的combine for and if语句。@user3459 261,如我在上面的答案中所示,或者如用户3建议的第一个答案所示