Добавление каждого элемента из одного списка в каждый элемент из другого списка в третий список

#python #arrays #list

Вопрос:

Изображение следующих списков:

 A = [1,2,3,4] B = ['A','B','C','D'] C = [10,11,12,13] D = [100,200,300,400]  

Я должен получить следующие результаты: Z = ['1A10100', '2B11200', '3C12300', '4D13400']

Я могу сделать это, используя множество пустых массивов, сначала сделайте это с помощью цикла for для A и B, чем используйте этот новый список и добавляйте C для каждого i и т. Д.

Вопрос в том, можно ли это сделать более разумным способом. В моем реальном случае списков 6?

Ответ №1:

Вы можете использовать простое понимание списка:

 Z = [''.join(str(x) for x in l) for l in zip(A,B,C,D)]  

выход: ['1A10100', '2B11200', '3C12300', '4D13400']

Если у вас уже есть контейнер для ваших списков:

 lists = [A,B,C,D] [''.join(str(x) for x in l) for l in zip(*lists)]  

Ответ №2:

Используя понимание списка, мы можем попробовать:

 A = [1,2,3,4] B = ['A','B','C','D'] C = [10,11,12,13] D = [100,200,300,400]  nums = list(range(0, len(A))) Z = [str(A[i])   B[i]   str(C[i])   str(D[i]) for i in nums] print(Z) # ['1A10100', '2B11200', '3C12300', '4D13400']  

Ответ №3:

Если длина каждого списка фиксирована и одинаковой длины, вы можете просто выполнить цикл по индексам, объединить их, а затем поместить все по одному в результирующий массив.

 A = [1,2,3,4] B = ['A','B','C','D'] C = [10,11,12,13] D = [100,200,300,400]  # Prepare the empty array result = []  # Concat and insert one-by-one for i in range(len(A)):  result.append('{}{}{}{}'.format(A[i], B[i], C[i], D[i]))   print(result)  

Выход:

 ['1A10100', '2B11200', '3C12300', '4D13400']  

Существует также другой способ объединения и вставки в результирующий массив, помимо приведенного выше кода:

  • Вы можете назначить временную переменную для объединения перед вставкой:
 for i in range(len(A)):  tmp = str(A[i])   B[i]   str(C[i])   str(D[i])  result.append(tmp)  
  • Или вы можете просто поместить переменные во внутренние фигурные скобки таким образом
 for i in range(len(A)):  result.append(f'{A[i]}{B[i]}{C[i]}{D[i]}')