gpt4 book ai didi

python - 如何在 Python 中检查列表中的两个数字是否相同

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:18 25 4
gpt4 key购买 nike

我有一些编码问题。这是我的代码:

def sites(x):
r = []
sum = 0
i = 0
modulo = []
som = 0
j = 0
while i < len(x):
sum = int(float(x[i])) + (i + 1)
r.append(sum)
i = i + 1
while j < len(x):
som = r[j] % len(x)
modulo.append(som)
j = j + 1
return modulo

例如,如果我填写 sites("321"),此代码将给我列表 [1, 1, 1]。我想要做的是检查此列表中是否有相同的数字。我在想类似的事情:

if modulo[0] != modulo[1] != modulo[2]:
print "valid"
else:
print "invalid"

这仅在站点中的输入长度为三位数时有效。我一直在集思广益如何使用 while 循环来检查每个数字。

非常欢迎所有帮助。

最佳答案

您可以使用一个集合来删除任何重复项并检查原始列表之后的长度:

if len(set(modulo)) == len(modulo): # if lengths are  equal we have no duplicate nums
print "valid"
else:
print "Invalid"

如果你只是想避免添加重复项,请在添加之前保留一组可见的所有数字并检查:

seen = set()
if num not in seen: add it

我也会避免使用 sum 作为变量名,因为它隐藏了内置的 python sum 函数。

你也可以使用enumerate,range而且你不需要在python中声明变量:

def sites(x):
r = []
modulo = []
ln = len(x)
for i,ele in enumerate(x):
sm = int(float(ele)) + (i + 1)
r.append(sm)
for j in range(ln):
som = r[j] % ln
modulo.append(som)
return modulo

或者更好地再次使用 list comprehensions :

def sites(x):
ln = len(x)
r = [int(float(ele)) + (i + 1) for i,ele in enumerate(x)]
modulo = [r[j] % ln for j in range(ln)]
return modulo

关于python - 如何在 Python 中检查列表中的两个数字是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28641105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com