python列表拼接的幾種方法

我們在分析列表數(shù)據(jù)時,常常需要對列表數(shù)據(jù)進(jìn)行輸出或多列表關(guān)聯(lián)拼接。直接使用列表,列表中的各元素以逗號分隔,每個元素包含引號。如何連接列表中的元素為一個字符串呢?下面介紹幾種列表拼接為字符串的方式:

1.使用join()方法連接列列表
使用join()方法可將列表中的元素以指定的間隔符進(jìn)行連接,如果不使用間隔符,可以使用' ‘空字符作為間隔符。下面介紹使用符號' ' 和"_"連接每個城市:

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

output:
北京 上海 廣州 深圳 成都 武漢
北京_上海_廣州_深圳_成都_武漢

2.利用for循環(huán)連接列表
使用for循環(huán)讀取列表中的每一個元素,然后拼接為一個字符串。可以按需要設(shè)置間隔字符。如使用符號''、'+'和'<'連接列表中的元素。在輸出時,若使用print()函數(shù)進(jìn)行直接輸出,也可以直接設(shè)置print()函數(shù)的end參數(shù)來設(shè)置分隔符,如下:

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 = '*')    #在輸出時設(shè)置間隔符為“*”
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.對列表進(jìn)行切片然后連接
使用列表中的切片操作提取列表中的元素,然后用“+”連接,可以實現(xiàn)列表中元素的連接,如下:

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()函數(shù)用于可迭代的對象作為參數(shù),將對象中對應(yīng)的元素依次打包成元組,然后返回由這些元組組成的列表。如果各個迭代器的元素個數(shù)不一致,則返回列表長度與最短的對象相同,利用“*”號操作符,可以將元組解壓為列表。
語法:zip([iterable,...])
參數(shù)說明:“iterable,...”用于指定一個或多個迭代器。
返回值:元組列表
示例:有table1,table2,table3,3個表分別分別存儲了各國汽車銷量的前六名品牌和銷量,若要對各品牌汽車銷量進(jìn)行匯總分析,可以使用zip()函數(shù)將多個列表拼接為一個列表,如下:

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

從結(jié)果看,輸出數(shù)據(jù)排列不整齊。究其原因則是數(shù)據(jù)中包含中文,會使輸出的列數(shù)據(jù)無法排列整齊。這里使用對齊函數(shù)ljust()方法,也無法對齊數(shù)據(jù),因為中文占據(jù)的字符長度和英文不同,此時可以使用制表符'\t'來進(jìn)行對齊輸出,如下:

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編程錦囊》明日科技。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    極客學(xué)院Wiki閱讀 7,847評論 0 3
  • 不知不覺易趣客已經(jīng)在路上走了快一年了,感覺也該讓更多朋友認(rèn)識知道易趣客,所以就謝了這篇簡介,已做創(chuàng)業(yè)記事。 易趣客...
    Physher閱讀 3,831評論 1 2
  • 雙胎妊娠有家族遺傳傾向,隨母系遺傳。有研究表明,如果孕婦本人是雙胎之一,她生雙胎的機(jī)率為1/58;若孕婦的父親或母...
    鄴水芙蓉hibiscus閱讀 3,924評論 0 2
  • 晴天,擁抱陽光,擁抱你。雨天,想念雨滴,想念你。 我可以喜歡你嗎可以啊 我還可以喜歡你嗎可以,可是你要知道我們不可...
    露薇霜凝閱讀 1,367評論 1 2

友情鏈接更多精彩內(nèi)容