我是编程的初学者。我看到了关于极客们缺少数字的挑战。所提出的解决办法对我来说相当复杂。我不知道我的解决方案是否正确,因为这似乎太容易了。谢谢!
A = [1, 2, 3, 4, 5, 7]
def missing():
for i in range (len(A)):
if A[i+1] != A[i] + 1:
return A[i] + 1
missing()发布于 2021-04-20 05:23:49
这是你的例子,但清单理解。这将允许您返回所有缺失数字的列表。请记住,您的解决方案只适用于间隙== 1。
A = [1, 3, 4, 5, 7]
def missing(A):
x = [A[i] + 1 for i in range (len(A)-1) if A[i+1] != A[i] + 1]
return x
print(missing(A))输出
[2, 6]发布于 2021-04-20 05:25:50
我会说,您的代码非常不稳定,但它可能会起作用。
我想说这更有效
A = [1, 2, 3, 4, 5, 7]
def missing():
for i in range(len(A)):
result = 0
if A[i+1] != A[i] + 1:
result A[i] + 1
return result
missing()但如果1是缺失的数字呢?
下面的代码允许1是缺少的数字。
A = [1, 2, 3, 4, 5, 7]
def missing():
if A[0] != 1:
result = 1
return result
for i in range(len(A)):
result = 0
if A[i+1] != A[i] + 1:
result A[i] + 1
return result
missing()发布于 2021-04-20 05:38:54
您只需检查从列表中的第一个元素到列表中的最后一个元素的数字范围内的每个数字是否存在于列表中。
for 循环
>>> def missing_num(numlist):
numlist.sort()
missing = []
for i in range(numlist[0], numlist[-1]+1):
if i not in numlist:
missing.append(i)
return missing
>>> missing_num([1, 2, 3, 4, 5, 7])
[6]列表理解
>>> def missing_num(numlist):
numlist.sort()
nums = list(range(numlist[0], numlist[-1]+1))
return [i for i in nums if i not in numlist]
>>> missing_num([1, 2, 3, 4, 5, 7])
[6]有一些随机列表:
>>> for _ in range(5):
randlist = random.sample(list(range(10)), 7)
print(randlist, missing_num(randlist))
[1, 2, 3, 4, 5, 7, 9] [6, 8]
[0, 1, 2, 5, 6, 7, 8] [3, 4]
[0, 1, 3, 4, 5, 6, 9] [2, 7, 8]
[2, 4, 5, 6, 7, 8, 9] [3]
[0, 2, 3, 4, 5, 7, 8] [1, 6]https://stackoverflow.com/questions/67172850
复制相似问题