Могу ли я присоединиться к трем спискам в Python (список строк и список из двух чисел)

1

есть способ, которым я могу объединить список строк и 2 списка номеров, так что объединенный список будет принимать их один за порядком при их присоединении.

Входные данные:

a = [john, bob, ted, Paul]
b = [22, 34, 56, 12]
c = [13, 98, 78, 60]

Ожидаемый вывод:

[john, 22, 13, bob, 34, 98, ted, 56, 78, Paul, 12, 60]
  • 3
    Возможное дублирование чередования нескольких списков в Python
  • 0
    если вам не важен порядок списка, вы также можете добавить список вместе, как a + b + c
Теги:

3 ответа

2

Вы можете использовать функцию zip со списком:

a = ['john', 'bob', 'ted', 'Paul']
b = [22, 34, 56, 12]
c = [13, 98, 78, 60]
outcome = [i for t in zip(a, b, c) for i in t]

outcome станет:

['john', 22, 13, 'bob', 34, 98, 'ted', 56, 78, 'Paul', 12, 60]

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

0

Ваши списки: Убедитесь, что все списки имеют одинаковые размеры.

a = ['john', 'bob', 'ted', 'Paul']
b = [22, 34, 56, 12]
c = [13, 98, 78, 90]

Импортировать numpy отличный модуль для обработки массивов

import numpy as np

Создайте массив numpy и измените их, как хотите.

a = np.array(a).reshape(-1,1)
b = np.array(b).reshape(-1,1)
c = np.array(c).reshape(-1,1)

Соедините их вдоль требуемой оси. В вашем случае это будет 1 (Колонка мудрая, как мы изменили массивы)

f= np.concatenate((a,b,c),axis=1)

Сгладить их в 1D массиве

f = f.flatten()
print(f)
0

Использование форматированной строки и перечисление со списком

l = ['{}, {}, {}'.format(a[idx], b[idx], c[idx]) for idx, item in enumerate(a)]
['john, 22, 13', 'bob, 34, 98', 'ted, 56, 78', 'Paul, 12, 60']

Ещё вопросы

Сообщество Overcoder
Наверх
Меню