Python 3.x 将多个列表中的有序项连接在一起,形成新的串联字符串列表
我有三个列表,我想将它们连接起来,这样在每个列表中排序的相同项目从每个列表连接成一个字符串 比如说,, 我有一个天的列表,一个月的列表,还有一个年的列表,我想合并成一个新的列表,这样我就有了一个完整的日期,但是在日-月和月-年之间有“-” 如果日期[0]=“15”、月份[0]=“3”和年份[0]=“2012”,则日期应与“2012年3月15日”结尾处的日期类似,以此类推 使用列表理解不起作用,因为我只是对每个列表中的每个项目进行组合日期的迭代。任何帮助都将不胜感激Python 3.x 将多个列表中的有序项连接在一起,形成新的串联字符串列表,python-3.x,list,join,concatenation,Python 3.x,List,Join,Concatenation,我有三个列表,我想将它们连接起来,这样在每个列表中排序的相同项目从每个列表连接成一个字符串 比如说,, 我有一个天的列表,一个月的列表,还有一个年的列表,我想合并成一个新的列表,这样我就有了一个完整的日期,但是在日-月和月-年之间有“-” 如果日期[0]=“15”、月份[0]=“3”和年份[0]=“2012”,则日期应与“2012年3月15日”结尾处的日期类似,以此类推 使用列表理解不起作用,因为我只是对每个列表中的每个项目进行组合日期的迭代。任何帮助都将不胜感激 day = ['15', '0
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]
假设这三个列表的长度相同(在本例中,它们是相同的),那么您可以使用以下列表:
combined = [day[i] + '-' + month[i] + '-' + year[i] for i in range(len(day))]
它可以表示为循环的,如下所示:
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)
它循环通过天
len(天)*len(月)*len(年)
,这就是为什么您不会得到预期的结果。如果三个列表的长度相同(在本例中,它们是相同的),那么您可以使用以下列表:
combined = [day[i] + '-' + month[i] + '-' + year[i] for i in range(len(day))]
它可以表示为
循环的,如下所示:
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)
它在天
len(天)*len(月)*len(年)
之间循环,这就是为什么您不会得到预期结果的原因。由于您的列表长度相同,您可以使用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']
由于列表长度相同,因此可以使用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']
你的回答很有帮助!谢谢!你的回答很有帮助!谢谢!我真的很高兴你建议拉普。我试图将三个列表压缩在一起,但未能成功。我也不知道如何在拉拉链时包含“-”。感谢您提供解决方案!我真的很高兴你建议拉普。我试图将三个列表压缩在一起,但未能成功。我也不知道如何在拉拉链时包含“-”。感谢您提供解决方案!