объединить упорядоченные элементы из нескольких списков вместе, чтобы сформировать новый список объединенных строк - PullRequest
0 голосов
/ 25 сентября 2018

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

Например, у меня есть список дней, список месяцев и список лет, которые я хотел бы объединить в новом списке, чтобы у меня была одна полная дата, но с «-» междудень-месяц и месяц-год.

Если день [0] = '15', месяц [0] = 'март' и год [0] = '2012', дата должна выглядеть примерно так в конце '15 -Mar-2012 'и т. д.

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

day = ['15', '09', '25', '03', '04', '05', '17', '14', '23', '20', '06', '19', '15', '04', '16', '22', '25', '08', '12', '18', '25', '15', '04', '24', '17', '13', '17', '18', '03', '23', '30', '22', '23', '16']
month = ['Mar', 'Apr', 'Apr', 'May', 'Jun', 'Jun', 'Jul', 'Mar', 'Jul', 'Aug', 'Sep', 'Jun', 'Oct', 'Jan', 'Apr', 'Oct', 'Oct', 'Nov', 'Feb', 'Jun', 'Feb', 'Dec', 'May', 'Feb', 'Nov', 'Dec', 'Apr', 'Apr', 'Aug', 'May', 'May', 'Aug', 'May', 'May']
year = ['2012', '2012', '2012', '2012', '2012', '2012', '2012', '2012', '2012', '2012', '2012', '2012', '2012', '2012', '2012', '2012', '2012', '2012', '2013', '2013', '2014', '2014', '2011', '2015', '2015', '2011', '2012', '2016', '2011', '2016', '2012', '2016', '2012', '2016']

combined = [i + '-' + j + '-' + k for i in day for j in month for k in year]

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Поскольку ваши списки имеют одинаковую длину, вы можете использовать zip для объединения вместе:

>>> ['{}-{}-{}'.format(*t) for t in zip(day,month,year)]
['15-Mar-2012', '09-Apr-2012', '25-Apr-2012', '03-May-2012', '04-Jun-2012', '05-Jun-2012', '17-Jul-2012', '14-Mar-2012', '23-Jul-2012', '20-Aug-2012', '06-Sep-2012', '19-Jun-2012', '15-Oct-2012', '04-Jan-2012', '16-Apr-2012', '22-Oct-2012', '25-Oct-2012', '08-Nov-2012', '12-Feb-2013', '18-Jun-2013', '25-Feb-2014', '15-Dec-2014', '04-May-2011', '24-Feb-2015', '17-Nov-2015', '13-Dec-2011', '17-Apr-2012', '18-Apr-2016', '03-Aug-2011', '23-May-2016', '30-May-2012', '22-Aug-2016', '23-May-2012', '16-May-2016']
0 голосов
/ 25 сентября 2018

Учитывая, что три списка имеют одинаковую длину (что в данном примере они есть), вы можете использовать следующее понимание списка:

combined = [day[i] + '-' + month[i] + '-' + year[i] for i in range(len(day))]

, которое может быть выражено как forцикл так:

combined = []
for i in range(len(day)):
    combined.append(day[i] + '-' + month[i] + '-' + year[i])

Это понимание списка использует тот факт, что все списки имеют одинаковый размер, получая всю информацию о сопоставлении для определенной точки в списке.


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

combined = []
for i in day:
   for j in month:
       for k in year:
           combined.append(i + '-' + j + '-' + k)

, который проходит по days len(day) * len(month) * len(years), поэтому вы не получили быожидаемые результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...