如何使用Python计算集合或列表中的倍数?

时间:2017-09-01 01:15:39

标签: python

我一直在生成随机集和列表,并且很好奇如何计算给定集或列表中的倍数。我写的代码给了我错误的数字,所以我假设我分配了错误的东西。代码是

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)

我是编码和交换的新手,所以任何帮助都会受到赞赏。

2 个答案:

答案 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中,TrueFalse分别等于10。您可以利用此功能并使用sum将布尔值添加到一起。结果将是e元素的数量,其中bool(e)的评估结果为True

count_multiples = sum(y % x == 0 for y in b for x in b)