我一直在生成随机集和列表,并且很好奇如何计算给定集或列表中的倍数。我写的代码给了我错误的数字,所以我假设我分配了错误的东西。代码是
b= random.sample(range(1, 56), 6)
print(b)
numbers = (b)
count_multiples = 0
for y in (b):
for x in (b):
if y % x ==0:
count_multiples+=1
print("MPS:", count_multiples)
我是编码和交换的新手,所以任何帮助都会受到赞赏。
答案 0 :(得分:0)
这取决于列表中的倍数的具体含义。
1)。你想至少计算一次每个数字,因为每个数字都是它自身的倍数吗?
2)。如果元素是列表中多个元素的倍数,是否要多次计算一个元素?
如果您对这两个问题的回答都是肯定的,那么您的代码看起来很好(尽管不是最有效的)。如果没有尝试类似以下内容:
min, max = 1, 56
n = 6
count = 0
random_list_with_no_duplicates = random.sample(range(min, max), n)
# If no to 1) but yes to 2)
random_list_with_no_duplicates.sort()
for i in range(n):
for j in range(i + 1, n):
if random_list_with_no_duplicates[j] % random_list_with_no_duplicates[i] == 0:
count += 1
# If no both
random_list_with_no_duplicates.sort(reverse=True)
for i in range(n):
for j in range(i + 1, n): # change to just 'i' if yes to 1), no to 2)
if random_list_with_no_duplicates[i] % random_list_with_no_duplicates[j] == 0:
count += 1
break
答案 1 :(得分:0)
在Python中,True
和False
分别等于1
和0
。您可以利用此功能并使用sum
将布尔值添加到一起。结果将是e
元素的数量,其中bool(e)
的评估结果为True
。
count_multiples = sum(y % x == 0 for y in b for x in b)