Разделение огромного списка на более мелкие списки и добавление элементов в эти подсписки

#python #list #append #sublist

#python #Список #добавить #подсписок

Вопрос:

У меня есть огромный список, который был импортирован из файла csv. Этот список содержит более 40 000 строковых элементов. Я хочу разделить каждый элемент на независимый список.

Это выдержка из моего списка:

 ['090-102  XX.Abcdefg;Female;95 y más años;1985;24n',
 '090-102  XX.Abcdefg;Female;95 y más años;1984;52n', 
 '090-102  XX.Abcdefg;Female;95 y más años;1983;60n', 
 '090-102  XX.Abcdefg;Female;95 y más años;1982;61n', 
 '090-102  XX.Abcdefg;Female;95 y más años;1981;63n', 
 '090-102  XX.Abcdefg;Female;95 y más años;1980;48n']
 

Я хочу, чтобы каждый элемент в списке был разделен на новый список следующим образом:

 [['090-102  XX.Abcdefg,Female,95 y más años,1985,24n']
 ['090-102  XX.Abcdefg,Female,95 y más años,1984,52n'] 
 ['090-102  XX.Abcdefg,Female,95 y más años,1983,60n'] 
 ['090-102  XX.Abcdefg,Female,95 y más años,1982,61n'] 
 ['090-102  XX.Abcdefg,Female,95 y más años,1981,63n'] 
 ['090-102  XX.Abcdefg,Female,95 y más años,1980,48n']]
 

И мне также нужно вставить новые элементы (элементы из двух других списков) в новые разделенные подсписки:

 other_list = ['XX','XX','XX','XX','XX','XX']
other_list2 = [20, 20, 20, 20, 20, 20]
 

Итак, мой конечный результат выглядит так:

 [['090-102  XX', 'XX', 20, 'Abcdefg,Female,95 y más años, 1985, 24n']
 ['090-102  XX', 'XX', 20, 'Abcdefg,Female,95 y más años, 1985, 24n']
 ['090-102  XX', 'XX', 20, 'Abcdefg,Female,95 y más años, 1985, 24n'] 
 ['090-102  XX', 'XX', 20, 'Abcdefg,Female,95 y más años, 1985, 24n'] 
 ['090-102  XX', 'XX', 20, 'Abcdefg,Female,95 y más años, 1985, 24n']
 ['090-102  XX', 'XX', 20, 'Abcdefg,Female,95 y más años, 1985, 24n']]
 

Я не знаю, должен ли я сначала добавлять элементы в огромный список, прежде чем разделять его на подсписки. Любая помощь будет принята с благодарностью.

Ответ №1:

Я предполагаю, что все ваши списки имеют одинаковую длину, в противном случае вам сначала нужно заполнить пробелы. Я вижу, что вы пытаетесь создать новый список из 3 (или более) списков, и новый список имеет одинаковый формат для всех его элементов. Сначала вы можете разделить элементы из вашего первого списка на точки,:

 newList1=[]
for i in list11:
   newList1.append(i.split('.')) 
 

это преобразует каждый элемент вашего списка в список, где первый элемент — это то, что перед точкой, а второй элемент — это то, что после точки. Затем добавляет в этот список newList1 переменную.

после этого это простой цикл for:

 a = [['xx','xx'], ['yy', 'yy'] , [ 'zz', 'zz']]
b = [1,2,3]
c = [0, 00, 000]
newList2 = []
for i in range(len(a)):
    newList2.append(a[i][0] str(b[i]) a[i][1] str(c[i])) #adjust to your format
 

Комментарии:

1. Привет! спасибо за ответ. Я смог разделить элементы из моего первого списка на точки. Однако, когда я пытаюсь выполнить цикл for, я получаю эту ошибку: «TypeError: можно только объединить str (не «int») в str»

2. Вы правы. Мы должны преобразовать любые числовые значения в строки. Смотрите Мое редактирование последней строки.