python列表拼接的几种方法

我们在分析列表数据时,常常需要对列表数据进行输出或多列表关联拼接。直接使用列表,列表中的各元素以逗号分隔,每个元素包含引号。如何连接列表中的元素为一个字符串呢?下面介绍几种列表拼接为字符串的方式:

1.使用join()方法连接列列表
使用join()方法可将列表中的元素以指定的间隔符进行连接,如果不使用间隔符,可以使用' ‘空字符作为间隔符。下面介绍使用符号' ' 和"_"连接每个城市:

city = ['北京','上海','广州','深圳','成都','武汉']
print(' '.join(city))
print('_'.join(city))

output:
北京 上海 广州 深圳 成都 武汉
北京_上海_广州_深圳_成都_武汉

2.利用for循环连接列表
使用for循环读取列表中的每一个元素,然后拼接为一个字符串。可以按需要设置间隔字符。如使用符号''、'+'和'<'连接列表中的元素。在输出时,若使用print()函数进行直接输出,也可以直接设置print()函数的end参数来设置分隔符,如下:

data = [10,20,30,40,50,60,70,80]
strnull = ''
stradd = ''
strlin = ''
for item in data:
     strnull = strnull + str(item)       #连接列表中的元素,间隔符为空
     stradd = stradd + '+' + str(item)   #连接列表中的元素,间隔符为“+”
     strlin = strlin + '<' + str(item)   #连接列表中的元素,间隔符为“<”
     if item == 80:
          print(item)
     else:
          print(item,end = '*')    #在输出时设置间隔符为“*”
print(strnull)
print(stradd.lstrip('+'))
print(strlin.lstrip('<'))

output:
10*20*30*40*50*60*70*80
1020304050607080
10+20+30+40+50+60+70+80
10<20<30<40<50<60<70<80

3.对列表进行切片然后连接
使用列表中的切片操作提取列表中的元素,然后用“+”连接,可以实现列表中元素的连接,如下:

data = ['北京','上海','广州','深圳','成都','武汉','杭州','苏州']
strnull = data[0] + data[2] + data[4] + data[7]  #连接列表中的元素,间隔符为空
stradd = data[0] + '_' + data[2] + '_' +  data[4] +'_' + data[7]  #连接列表中的元素,间隔符为“+”
print(strnull)
print(stradd)

output:
北京广州成都苏州
北京_广州_成都_苏州

4.使用zip压缩多个列表为一个列表
zip()函数用于可迭代的对象作为参数,将对象中对应的元素依次打包成元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用“*”号操作符,可以将元组解压为列表。
语法:zip([iterable,...])
参数说明:“iterable,...”用于指定一个或多个迭代器。
返回值:元组列表
示例:有table1,table2,table3,3个表分别分别存储了各国汽车销量的前六名品牌和销量,若要对各品牌汽车销量进行汇总分析,可以使用zip()函数将多个列表拼接为一个列表,如下:

table1=[["大众",643518],["奔驰",319163],["宝马",265051],["福特",252323],["雪铁龙",227967],["奥迪",255300]]
table2=[["雪铁龙", 698985],["雷诺",547704],["大众",259268],["福特",82633],["宝马",84931],["奔驰",73254]]
table3=[["福特",254082],["大众",203150],["雪铁龙",177298],["奔驰",172238],["宝马",172048],["奥迪",143739]]
for item1,item2,item3 in zip(table1,table2,table3):
    print(item1[0],item1[1],"  ",item2[0],item2[1],"  ",item3[0],item3[1])

output:
大众 643518    雪铁龙 698985    福特 254082
奔驰 319163    雷诺 547704    大众 203150
宝马 265051    大众 259268    雪铁龙 177298
福特 252323    福特 82633    奔驰 172238
雪铁龙 227967    宝马 84931    宝马 172048
奥迪 255300    奔驰 73254    奥迪 143739

从结果看,输出数据排列不整齐。究其原因则是数据中包含中文,会使输出的列数据无法排列整齐。这里使用对齐函数ljust()方法,也无法对齐数据,因为中文占据的字符长度和英文不同,此时可以使用制表符'\t'来进行对齐输出,如下:

for item1,item2,item3 in zip(table1,table2,table3):
    item11 = item1[0].ljust(8)
    item12 = str(item1[1]).ljust(8)
    item21 = item2[0].ljust(8)
    item22 = str(item2[1]).ljust(8)
    item31 = item1[0].ljust(8)
    item32 = str(item3[1]).ljust(8)
    print(item11 +"\t",item12+"\t","  ",item21+"\t",item22+"\t","  ",item31+"\t",item32)

output:
大众             643518             雪铁龙       698985             大众         254082
奔驰             319163             雷诺         547704             奔驰         203150
宝马             265051             大众         259268             宝马         177298
福特             252323             福特         82633              福特         172238
雪铁龙           227967             宝马         84931              雪铁龙       172048
奥迪             255300             奔驰         73254              奥迪         143739

参考资料:《python编程锦囊》明日科技。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    极客学院Wiki阅读 12,205评论 0 3
  • 不知不觉易趣客已经在路上走了快一年了,感觉也该让更多朋友认识知道易趣客,所以就谢了这篇简介,已做创业记事。 易趣客...
    Physher阅读 8,790评论 1 2
  • 双胎妊娠有家族遗传倾向,随母系遗传。有研究表明,如果孕妇本人是双胎之一,她生双胎的机率为1/58;若孕妇的父亲或母...
    邺水芙蓉hibiscus阅读 9,096评论 0 2
  • 晴天,拥抱阳光,拥抱你。雨天,想念雨滴,想念你。 我可以喜欢你吗可以啊 我还可以喜欢你吗可以,可是你要知道我们不可...
    露薇霜凝阅读 5,020评论 1 2

友情链接更多精彩内容