我如何编写代码,以便我检查一串数字中的重复项。
alist = [['123456789', '112345678', '123345678', '859403126']]
(alist[0][0] = no duplicate)
(alist[0][1] = duplicate)
(alist[0][2] = duplicate)
(alist[0][3] = no duplicate)
感谢您的帮助。
答案 0 :(得分:4)
创建set
并比较长度
>>> x = alist[0][0]
>>> len(set(x)) == len(x)
True
答案 1 :(得分:0)
您可以尝试这种方法:
"".join(set(alist[0][0]))
因此,您将在字符串中获得一组唯一字母,而 join()将以任意顺序将字母连接回字符串。在此操作之后,只需检查新字符串是否与原始字符串具有相同的长度。
答案 2 :(得分:0)
此列表理解
dups = [[len(set(el)) != len(el) for el in el0] for el0 in alist]
产生
[[False, True, True, False]]
即。 False
代表'没有重复',True
代表'重复'
如果你真的想要这样的文字,请使用:
dups = [[ 'duplicate' if len(set(el)) != len(el) else 'no duplicate' for el in el0] for el0 in alist]
产生
[['no duplicate', 'duplicate', 'duplicate', 'no duplicate']]
答案 3 :(得分:0)
首先,我认为pacholik的答案是最容易理解的答案。 在this example之后,我提供了以下解决方案
import re
alist = [['123456789', '112345678', '123345678', '859403126']]
for i in alist[0]:
print('alist[0][{}] = '.format(i),'duplicate' if re.search(r'.*?(.).*?\1',i) else 'no duplicate')