如何将列表中的项目连接(连接)为单个字符串
- 2024-11-19 08:38:00
- admin 原创
- 12
问题描述:
如何将一串字符串连接成一个字符串?
例如,给定['this', 'is', 'a', 'sentence']
,我如何获得"this-is-a-sentence"
?
有关在单独的变量中处理几个字符串,请参阅如何在 Python 中将一个字符串附加到另一个字符串?。
对于相反的过程(从字符串创建列表),请参阅如何将字符串拆分为字符列表?或如何将字符串拆分为单词列表?(视情况而定)。
解决方案 1:
使用str.join
:
>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
解决方案 2:
将列表转换为字符串的更通用的方法(也包括数字列表)是:
>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)
12345678910
解决方案 3:
对于初学者来说,了解
为什么 join 是一个字符串方法是非常有用的。
一开始很奇怪,但之后就非常有用了。
连接的结果始终是一个字符串,但要连接的对象可以是多种类型(生成器、列表、元组等)。
.join
速度更快,因为它仅分配一次内存。比传统串联更好(请参阅扩展解释)。
一旦你学会了它,它就会非常舒服,你可以用这样的技巧来添加括号。
>>> ",".join("12345").join(("(",")"))
Out:
'(1,2,3,4,5)'
>>> list = ["(",")"]
>>> ",".join("12345").join(list)
Out:
'(1,2,3,4,5)'
解决方案 4:
>>> list_abc = ['aaa', 'bbb', 'ccc']
>>> string = ''.join(list_abc)
>>> print(string)
aaabbbccc
>>> string = ','.join(list_abc)
>>> print(string)
aaa,bbb,ccc
>>> string = '-'.join(list_abc)
>>> print(string)
aaa-bbb-ccc
>>> string = '
'.join(list_abc)
>>> print(string)
aaa
bbb
ccc
解决方案 5:
从未来编辑:请不要使用下面的答案。此功能已在 Python 3 中删除,Python 2 已失效。即使您仍在使用 Python 2,也应该编写 Python 3 就绪代码,以使不可避免的升级更容易。
虽然@Burhan Khalid 的回答很好,但我认为这样更容易理解:
from str import join
sentence = ['this','is','a','sentence']
join(sentence, "-")
join() 的第二个参数是可选的,默认为“ ”。
解决方案 6:
我们也可以使用Python的reduce
函数:
from functools import reduce
sentence = ['this','is','a','sentence']
out_str = str(reduce(lambda x,y: x+"-"+y, sentence))
print(out_str)
解决方案 7:
我们可以指定如何连接字符串。'-'
我们可以使用来代替' '
:
sentence = ['this','is','a','sentence']
s=(" ".join(sentence))
print(s)
解决方案 8:
如果您有一个混合内容列表并想要对其进行字符串化,这里有一种方法:
考虑一下这个列表:
>>> aa
[None, 10, 'hello']
将其转换为字符串:
>>> st = ', '.join(map(str, map(lambda x: f'"{x}"' if isinstance(x, str) else x, aa)))
>>> st = '[' + st + ']'
>>> st
'[None, 10, "hello"]'
如果需要,转换回列表:
>>> ast.literal_eval(st)
[None, 10, 'hello']
解决方案 9:
还可以通过str.format()
解包列表来连接列表中的值format()
,将值按顺序插入占位符中。它也可以处理非字符串。
lst1 = ['this', 'is', 'a', 'sentence']
lst2 = ['numbers', 1, 2, 3]
'{}-{}-{}-{}'.format(*lst1) # 'this-is-a-sentence'
'{} {}, {} and {}'.format(*lst2) # 'numbers 1, 2 and 3'
对于大型列表,我们可以使用列表的长度来初始化适当数量的占位符。可以使用以下两种方法之一来实现这一点:
* ```
('{}, '*len(lst)).rstrip(', ').format(*lst)
一个工作示例:
lst = [1.2345, 3.4567, 4.567, 5.6789, 7.8]
', '.join(['{}']*len(lst)).format(*lst) # '1.2345, 3.4567, 4.567, 5.6789, 7.8'
('{}, '*len(lst)).format(*lst).rstrip(', ')
# with a float format specification
', '.join(['{:.2f}']*len(lst)).format(*lst) # '1.23, 3.46, 4.57, 5.68, 7.80'
解决方案 10:
如果您想在最终结果中生成一串用逗号分隔的字符串,您可以使用如下方法:
sentence = ['this','is','a','sentence']
sentences_strings = "'" + "','".join(sentence) + "'"
print (sentences_strings) # you will get "'this','is','a','sentence'"
解决方案 11:
def eggs(someParameter):
del spam[3]
someParameter.insert(3, ' and cats.')
spam = ['apples', 'bananas', 'tofu', 'cats']
eggs(spam)
spam =(','.join(spam))
print(spam)
解决方案 12:
如果没有 .join() 方法,您可以使用此方法:
my_list=["this","is","a","sentence"]
concenated_string=""
for string in range(len(my_list)):
if string == len(my_list)-1:
concenated_string+=my_list[string]
else:
concenated_string+=f'{my_list[string]}-'
print([concenated_string])
>>> ['this-is-a-sentence']
因此,在此示例中,基于范围的 for 循环,当 Python 到达列表的最后一个单词时,它不应该将“-”添加到 concenated_string。如果它不是字符串的最后一个单词,则始终将“-”字符串附加到 concenated_string 变量。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件