Здесь новичок в Python.
У меня есть следующий вложенный кортеж, содержащий значения, стороны и контекст:
my_tuple = [(121, 131, 174, 188, 228, 242, 282),
('Left', 'Right', 'Right', 'Left', 'Left', 'Right', 'Right'),
('Foot Strike',
'Foot Off',
'Foot Strike',
'Foot Off',
'Foot Strike',
'Foot Off',
'Foot Strike')]
Я хотел бы извлечь значения, соответствующие значениям «Право» И «Удар ногой» (т. е. val = 174 и 282).
Я знаю, что могу извлечь первые индексы всех подкортежей, используя
first = [lis[0] for lis in my_tuple]
и впоследствии выберите первое значение этого кортежа, но мне не удается правильно установить условные значения для этого выбора.
Спасибо за помощь новичку!
out = (el[0] for el in zip(*my_tuple) if el[1]=='Right' and el[2]=='Foot Strike')
Объяснение:
Сначала мы используем zip
для получения итерации кортежей (value, side, context)
.
Затем мы можем пройти через эту итерацию, отфильтровать наше условие и вернуть первый элемент каждого кортежа.
Выход:
print(list(out))
[174, 282]
Спасибо! Так многому еще предстоит научиться...
Мы не часто видим этот синтаксис для понимания списка. Пожалуйста, используйте скобки [...]
вместо list(...)
.
out = [p for p, *s in zip(*my_tuple) if ' '.join(s) == 'Right Foot Strike']