Я не уверен, правильно ли я понял ваш вопрос. Как прокомментировал fgblomqvist , я заменил 1 if 'a' in a
на 1 if x == 'a'
в понимании списка. Затем я в основном воспроизвел ваш второй шаг с помощью for-l oop, а после этого я использовал zip
для синхронного перебора значений списка всех списков, чтобы вычислить сумму.
a = ['a','b','c','d','e']
b = ['b','a','c','e','a']
c = ['a','b','c','d','e']
# add the lists to a list.
lists = [a,b,c]
outcomes = []
for l in lists:
outcome = [1 if x == 'a' else 99 for x in l]
outcomes.append(outcome)
print(f'one of the outcomes: {outcome}')
results = []
# iterate over all list values synchronously and calculate the sum
for outs in zip(*outcomes):
results.append(sum(outs))
print(f'sum of {outs} is {sum(outs)}')
print(f'final result:{results}')
Это результат:
one of the outcomes: [1, 99, 99, 99, 99]
one of the outcomes: [99, 1, 99, 99, 1]
one of the outcomes: [1, 99, 99, 99, 99]
sum of (1, 99, 1) is 101
sum of (99, 1, 99) is 199
sum of (99, 99, 99) is 297
sum of (99, 99, 99) is 297
sum of (99, 1, 99) is 199
final result:[101, 199, 297, 297, 199]
редактировать: Чтобы избежать повторения цикла дважды, вы можете объединить циклы следующим образом:
lists = [a,b,c]
sums = []
for values in zip(*lists):
the_sum = 0
for val in values:
the_sum += 1 if val == 'a' else 99
sums.append(the_sum)
print(f'sums: {sums}')
Имейте в виду вы можете заменить 1 if val == 'a' else 99
на some_func(val)