我們在分析列表數(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編程錦囊》明日科技。