Измените все элементы в списке python и измените тип со string на integer

#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 движущиеся части:

  1. разделение списка строк
  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]