2014-10-07 2 views
1

так что если у меня есть как 100 подсписков в должен заменить строки в целое число L = [ «2013», «Патрик», «M», «2566»]конвертировать строку в междунар в подсписке - питон

Я должен преобразовать 2013 и такие числа в целое число для всех подписок. Я пробовал: Предположит 4 элементов на подсписок NewList = [карта (ИНТ, х) для й в L [0] [: 5]]

, но, очевидно, я получаю сообщение об ошибке, потому что 'патрик' не может быть преобразован.

ответ

0

Попробуйте это, перебирать свой основной список, и перестроены подсписки конвертирования в INT в зависимости от isdigit() функции:

>>> #your main list  
>>> huge_list = [ 
...  ['2013', 'Patrick', 'M', '2566'], 
...  ['1', 'Bob', 'M', '25'] 
... ] 
>>> #for each sublist, convert only the elements that are numbers (using isdigit() function) 
>>> for idx, sublist in enumerate(huge_list): 
...  huge_list[idx] = [ 
...   int(el) if el.isdigit() else el 
...   for el in sublist 
...  ] 
... 
>>> huge_list 
[[2013, 'Patrick', 'M', 2566], [1, 'Bob', 'M', 25]] 
2

Другого варианта поймать ValueError и возврат к исходному значению, если более необходима гибкость, чем одно- вкладыш обеспечивает:

L = ['2013', 'Patrick', 'M', '2566'] 

def try_convert(string): 
    try: 
     return int(string) 
    except ValueError: 
     return string 

newlist = map(try_convert, L) 

Результаты в:

[2013, 'Patrick', 'M', 2566] 
5

вы можете просто рассчитать понимание :)

results = [int(i) if i.isdigit() else i for i in L] 
Смежные вопросы