标题 字符串,列表的互相转换

首先,我们先定义不同种类的字符串和列表元组字典,定义如下:``

import re
s1=' hello zi fu chuan '
#定义了一个两端及中间有空格的字符串
s2=' #!$every day !'
#定义了一个有特殊字符的字符串
s3='1,5,7,9,3,2'
#定义了一个整数型字符串
l1=['abc','$#@','123']
#定义了一个非统一元素类型的列表
l2=[' iceorange ']
#定义了一个普通的列表 有空格
l3=[2,4,6,9,0]

===========================
#字符串转换成列表
result_1=list(s1)
print(type(result_1),result_1)
#这是错误的,因为,空格也是字符串的一部分,但
#显然,我们不希望看到空格,如果仅仅是只做
#字符串内的每个元素转换列表,这是可行的
#正则可以快速的把字符串转换成单词形式的列表
result_1=re.compile('\S+').findall(s1)
print(type(result_1),result_1,len(result_1))
result_2=re.compile('\S+').findall(s2)
print(type(result_2),result_2,len(result_2))
result_3=re.compile('\S+').findall(s3)
print(type(result_3),result_3,len(result_3))
#转换成功,由此,得出一个结论,
#如果,字符串前后有空格,取其中单词(包括特殊符号)
#使用re正则转换效率最高,可以自动去除空格
#如果,仅仅是单纯的字符串转换列表,使用list()方法
result_1=list(s1)
print(result_1)
=======================================
#列表转换成字符串
result_1=str(l1)
print(result_1,type(result_1),len(result_1))
#直接使用str方法包裹字符串即可,这是整体字符串转列表
#也可以使用join方法,整体字符串转换成列表
result_1=''.join(l1)
print(result_1,type(result_1),len(result_1))
#列表中的每个元素分别转换成字符串,使用列表表达式
result_1=[str(i) for i in l1]
print(result_1,type(result_1),len(result_1))
result_2=[str(i) for i in l2]
print(result_2,type(result_2),len(result_2))
result_3=[str(i) for i in l3]
print(result_3,type(result_3),len(result_3))
==========================================
总结一下,字符串转换成列表,方法有两个方法
split()方法和re正则表达式,
正则可以一次性的处理多余的空格,转换成单词列表,
当然,eval()方法也可以,但有局限性,
必须是列表嵌套在字符串中才可以使用,
在此不做研究,没有通用性。
------------------------------------------
列表转换成字符串的方法也是两个,一个是使用字符串的join()
方法,一个是使用列表推导式,可能,简单的列表可以使用推导式,
如果太复杂的列表,可能会推导式的易读性要打个折扣。