繁体   English   中英

在Python中将字符串列表转换为元组

[英]Convert a string list to a tuple in Python

我试图将一个字符串,如'SUP EPI C'转换为包含所有非间隔字符串的元组。 例如,如果输入是'SUP EPI C' ,那么程序应该返回('S', 'U', 'P', 'E', 'P', 'I', 'C')我就是尝试显而易见的循环方法,我开始如下:

for ch in john:
    if ch != ' ':
        j1 += ch
    else:
        # stuff

我被卡住了,因为我可以添加元组的第一个条目,但跳过后,空间只是逃避我。 任何提示将不胜感激!

元组是不可变的,因此一次构建一个项目是非常低效的。 您可以将序列直接传递给tuple

>>> tuple('SUP E P I C'.replace(" ",""))
('S', 'U', 'P', 'E', 'P', 'I', 'C')

或使用生成器表达式(此示例为overkill)

>>> tuple(x for x in 'SUP E P I C' if not x.isspace())
('S', 'U', 'P', 'E', 'P', 'I', 'C')

您的代码的问题是您正在尝试将字符串添加到元组; 你需要在元组中添加一个元组:

j1 = ()
for ch in john:
    if ch != ' ':
        j1 += (ch,)

通过这一个小修复,您的原始代码可以正常工作。

它相当于gnibbler答案中给出的理解:

j1 = tuple(ch for ch in john if ch != ' ')

...或者,就此而言, filter调用:

j1 = tuple(filter(lambda ch: ch != ' ', john))

当然,除非那些“其他东西”是非平凡的,否则你将无法轻易转换它; 你需要坚持原来的显式循环。 这并没有错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM