У меня есть список чисел, из которых я извлек общие факторы всех этих чисел.Например, из списка b = [16, 32, 96]
я произвел list_of_common_factors = [1, 8, 16, 2, 4]
.
У меня есть еще один список целых чисел, a
, и я хочу извлечь числа из list_of_common_factors
, из которых все элементы a
являются факторами.Так что, если a = [2, 4]
, то я должен получить [4, 8, 16]
, так как это числа в list_of_common_factors
, из которых 2 и 4 являются факторами.
Однако я изо всех сил пытаюсь выяснить, как реализоватьэтот шаг в понимании списка, даже в псевдокоде.Это должно выглядеть примерно так: [x for x in list_of_common_factors if all elements of a are factors of x]
.Это утверждение if, с которым у меня возникают проблемы, потому что я считаю, что оно должно содержать цикл for, но я не могу придумать краткого способа его написания.
Мне удалось сделать это долгий путь, используя вложенный цикл for, и это выглядит так:
between_two_lists = []
# Determine the factors in list_of_common_factors of which all elements of a are factors.
for factor in list_of_common_factors:
# Check that all a[i] are factors of factor.
""" Create a counter.
For each factor, find whether a[i] is a factor of factor.
Do this with a for loop up to len(a).
If a[i] is a factor of factor, then increment the counter by 1.
At the end of this for loop, check if the counter is equal to len(a).
If they are equal to each other, then factor satisfies the problem requirements.
Add factor to between_two_lists. """
counter = 0
for element in a:
if factor % element == 0:
counter += 1
if counter == len(a):
between_two_lists.append(factor)
between_two_lists
- это список, который я пытаюсь составить путем преобразования приведенного выше кода в понимание списка.Как я могу это сделать, если это вообще возможно?