Вы не должны список для строкового объекта, однако, вы можете сделать это с помощью:
>>> [i[0][0].split('x')[1] for i in a]
['5', '10']
Я думаю, вы также хотите, чтобы преобразовать вывод INT объект, то вы можете просто добавьте int()
, как показано ниже:
>>> [int(i[0][0].split('x')[1]) for i in a]
[5, 10]
Однако, если вам не нужно сохранить вывод в список, но напечатать его вместо этого, вы можете просто использовать один и тот же код, но написать еще одну версию:
a = [[['3x5'], ['ff']], [['4x10'], ['gg']]]
for i in a:
print(i[0][0].split('x')[1])
Выход:
5
10
Помните, что мой код не удалось (поднять IndexError: list index out of range
), когда a
есть ... Например, [[['3x5'], ['ff']], [['kk'], ['gg']]]
(первый элемент в одном из подписок не в формате '3x5'
).
Однако простой if
можно исправить:
>>> a = [[['3x5'], ['ff']], [['kk'], ['gg']]]
>>> [int(i[0][0].split('x')[1]) for i in a]
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 1, in <listcomp>
IndexError: list index out of range
>>> [int(i[0][0].split('x')[1]) for i in a if 'x' in i[0][0]]
[5]
Или еще лучше, использовать регулярные выражения для проверки, что позволяет избежать что-то вроде a = [[['3x5'], ['ff']], [['xxxxxxx'], ['gg']]]
:
>>> import re
>>> a = [[['3x5'], ['ff']], [['xxxxxxx'], ['gg']]]
>>> [int(i[0][0].split('x')[1]) for i in a if re.search(r'\d+x\d+', i[0][0])]
[5]
Другой способ, если вы не» t want import re
:
>>> [int(i[0][0].split('x')[1]) for i in a
... if all(j.isdigit() for j in i[0][0].split('x'))]
[5]
Спасибо Kevin, ваше решение, а также решение Tim для образца, который я написал. Но проблема в том, что меня интересует только первый элемент списка.Если, например, где-то еще есть «x», ваше решение также вернет это значение. Например, если a = [[['3x5'], ['ff']], [['4x10'], ['5x12']]], выход будет 5, 10 и 12! – Hamed
@ Имущественные требования, такие как те, должны быть объяснены в вопросе. Теперь отредактируйте его и запомните в следующий раз. –
@ Hamed: Хорошо, я уже отредактировал свой ответ. Теперь он также дает '5' и' 10', когда 'a = [[['3x5'], ['ff']], [['4x10'], ['5x12']]]', спасибо за редактирование вашего вопрос. –