Я пробовал с этим

test_list = ['1,7'] 
test_list = [int(i) for i in test_list] 

Получил эту ошибку

ValueError: invalid literal for int() with base 10: '1,7'
-3
Puneeth Reddy 10 Фев 2021 в 21:08

1 ответ

Лучший ответ

Ваша линия:

test_list = [int(i) for i in test_list] 

Выполняет итерацию по каждой строке в вашем test_list, а не по каждому числу. Итак, сначала вам нужно указать на строку чисел, а затем на числа внутри строки. Для лучшего понимания длинный маршрут:

new = []

for i in test_list: # pointing to the '1,7' string
    for j in i.split(','): # splitting that string into a list
        new.append(int(j)) # appending each split as an int into the new list

print(new) # returns: [1, 7]

Подробнее о методе split () здесь.

Более короткий метод, как уже сказал Epsi95, использует метод, известный как "понимание списка", подробнее об этом здесь. Это та же реализация, что и в циклах for выше, только более аккуратная и эффективная (и намного красивее):

new = [int(j) for i in ['1,7'] for j in i.split(',')]
0
Chad Goldsworthy 10 Фев 2021 в 18:31