如何将列表中的项目连接(连接)为单个字符串

2024-11-19 08:38:00
admin
原创
11
摘要:问题描述:如何将一串字符串连接成一个字符串?例如,给定['this', 'is', 'a', 'sentence'],我如何获得"this-is-a-sentence"?有关在单独的变量中处理几个字符串,请参阅如何在 Python 中将一个字符串附加到另一个字符串?。对于相反的过程(从字符...

问题描述:

如何将一串字符串连接成一个字符串?

例如,给定['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 变量。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用