#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]}')