#python #list
#python #Список
Вопрос:
У меня есть числовой список, который выглядит так, как ['3,2,4', '21,211,43', '33,90,87']
я предполагаю, что на данный момент элементы рассматриваются как строки.
Я хочу удалить инвертированные запятые и составить список со всеми этими числами.
Ожидаемый результат [3,2,4, 21,211,43, 33,90,87]
Кроме того, я хотел бы знать, преобразуется ли тип элемента из string в integer .
Кто-нибудь, пожалуйста, помогите мне!
Комментарии:
1.
[int(x) for string in data for x in string.split(',')]
Ответ №1:
Как насчет следующего:
result = []
# iterate the string array
for part in ['3,2,4', '21,211,43', '33,90,87']:
# split each part by , convert to int and extend the final result
result.extend([int(x) for x in part.split(",")])
print(result)
Вывод:
$ python3 ~/tmp/so.py
[3, 2, 4, 21, 211, 43, 33, 90, 87]
Комментарии:
1. Какие изменения вы бы сделали, если элементы содержат символ типа ‘-‘ Например, ‘2,3,-,5’ является элементом, и вам нужно исключить ‘-‘
2. @RuaGoa зависит от того, как вы хотите обработать
-
. Если вы просто пропустите их, этогоint(x) for x in part.split(",") if x != "-"
должно быть достаточно. Если вы хотите сделать их 0s, вы можете просто использоватьpart.replace("-", "0")
перед разделением. Наконец, если вы хотите преобразовать их вNone
, я бы расширил генератор во второй цикл for и использовал try/except, чтобы установить значение None для всех значений, которые не были целыми числами
Ответ №2:
Здесь есть 3 движущиеся части:
- разделение списка строк
- преобразование строки в целое число
- выравнивание вложенного списка
Первый, str.split
:
>>> '1,2,3'.split(',')
['1', '2', '3']
Второй int
:
>>> int('2')
2
И последнее, но не менее важное, понимание списка:
>>> list_of_lists = [[1,2],[3,4]]
>>> [element for sublist in list_of_lists for element in sublist]
[1, 2, 3, 4]
Объединение всех трех частей остается для вас упражнением.
Ответ №3:
>>> your_list = ['3,2,4', '21,211,43', '33,90,87']
>>> your_list = [int(num) for item in your_list for num in item.split(",")]
>>> print(your_list)
[3, 2, 4, 21, 211, 43, 33, 90, 87]