2014-01-30 2 views
0

Если подсписка - 4 элемента, сохраните, если список состоит из 3-х предметов, вставьте «Null» в третье место подписок. Цикл for с условным «if» сделал бы это, но он довольно медленный. Есть ли более быстрый метод?Как вставить элемент в подсписку, если подсписка является определенной длиной?

lst = [['4','4','4','4'],['3','3','3'],['1','42','','4'],['1','2','3']] 

Desired_List = [['4','4','4','4'],['3','3','Null','3'],['1','42','5','4'],['1','2','Null','3']] 

То, что я, который не работает по какой-то причине я не понимаю:

Desired_List = [] 
for sublist in lst: 
    if len(sublist) == 3: 
     Desired_List.extend(sublist.insert(3,"Null")) 
    else: 
     Desired_List.extend(sublist) 

Это очень медленно, как я делаю это в большой список. Есть ли более быстрые методы?

+0

Вы уверены, что ваш код работает даже? Вы пытаетесь расширить 'None', что является ошибкой. –

ответ

1

если вы уже изменить lst считают просто использовать его вместо создания нового списка Desired_List, просто сделать:

>>> for sublist in lst: 
... if len(sublist) == 3: 
...  sublist.insert(2,"Null") 
... 
>>> lst 
[['4', '4', '4', '4'], ['3', '3', 'Null', '3'], ['1', '42', '', '4'], ['1', '2', 'Null', '3']] 
+0

не знал, что вы можете это сделать! – Chris

Смежные вопросы