内容概要:如何把列表中的元素拼接为一个字符串呢?本文介绍了采用 join() 函数的解决方法。

问题:有一个列表,比如:letters=[‘a’,‘b’,‘c’],想要把列表的元素连续显示出来,应该怎么办?

解决办法

1.使用 Python中如何在print()显示后不换行? 的方法,设置 end=‘’。如下代码所示:

letters=['a','b','c']
for letter in letters:
    print(letter,end='')

运行结果为:

abc

2.把列表中的元素拼接为一个字符串(string),然后显示字符串。这里用到了一个神奇的函数:join() ,它可以把列表拼接转换成一个字符串,用法为:字符串=‘分隔符’.join(列表)。如下代码所示:

letters_str=''.join(letters)
print(letters_str)

运行结果为:

abc

另一种情况也适合用 join() 函数:比如有一个词汇构成的列表,需要把这几个词汇组成一个短语。可以把分隔符设置为空格符,用' '.join()实现组合。代码示例如下:

words=['practice','makes','perfect']
phrase=' '.join(words)
print(phrase)

运行结果为:

practice makes perfect

不仅如此,我们还可以在 join() 函数内调用其它函数,如大小写转换、类型转换等,从而一次实现多个功能。这就要通过在 join() 函数中使用 list comprehension(列表推导式)来实现,即: join(function(e) for e in list)。

下面通过例子来看看。

1.比如,列表中的字符既有大写,又有小写。想在拼接的同时,把字符都转换为大写,应该怎么做呢?

方法:在 join() 函数中加入大小写转换的函数 upper()。代码示例如下:

letters=['a','ab','ac','D']
lettersStr=''.join(e.upper()for e in letters)
print(lettersStr)

运行结果为:

AABACD

2.前面提到,join() 函数是把列表的元素拼接为字符串。因此,列表中的元素需要是 string(字符串)类型。如果是一个数字列表,可以使用 join() 函数吗?

可以。只要在 join() 函数中加入类型转换,将数字转换为 string 型即可。代码示例如下:

nums=[1,2,3.6]
numsStr=''.join(str(e) for e in nums)
print(numsStr)

运行结果为:

123.6

3.除了用 Python 的函数,我们还可以应用自定义的函数。

比如,下面的代码先定义了一个 convert() 函数,如果字母是 a 或 A,那么保持不变;其它字母则转换为小写。然后,在 join() 函数中应用 convert() 函数。

def convert(letter):
    if letter.lower()=='a':
        return letter
    else:
        return letter.lower()
letters=['a','B','A','C']
lettersStr=''.join(convert(e)for e in letters)
print(lettersStr)

运行结果为:

abAc


参考
https://stackabuse.com/python-convert-list-to-string/