【问题标题】:join() merges my current string sandwiched to next iterated string :(?join() 将我当前的字符串合并到下一个迭代字符串:(?
【发布时间】:2019-11-01 16:54:58
【问题描述】:
def interleave(s1,s2):
    zipped_list=list(zip(s1,s2))
    print(zipped_list)
    empty_string=""
    for x in zipped_list:
        empty_string=empty_string.join(x)
        print(empty_string)
print(interleave("hi","bye"))

我的期望是压缩字符串的第一部分 ('h','b') 将与空字符串连接在一起,形成 empty_string="hb",现在对于下一次迭代,它将变为 empty_string="hbiy",因为下一个压缩元组是 (' i','y')。

但我的输出是: ihby 第一个字符串被夹在第二个字符串中。

请帮助我理解这一点并纠正我的错误实现。谢谢

预期输出: 压缩两个输入字符串并显示为单个字符串hbiy

【问题讨论】:

    标签: python python-3.x function tuples


    【解决方案1】:

    您的代码很好,除了您不了解将列表转换为字符串的概念的部分! 下面是代码:

    def interleave(s1,s2):
        zipped_list=list(zip(s1,s2))
        print(zipped_list)
        empty_string=""
        for x in zipped_list:
            empty_string+="".join(x)
            print(empty_string)
    
    print (interleave("hi","bye"))
    

    这个"".join(x)在第一次迭代中将你的元组转换为字符串('h','b'),它将输出hb,它存储在empty_string和第二次迭代中('i','y ') 它将输出iy,并将其连接到empty_string

    【讨论】:

    • 非常感谢 :) 有一个疑问,所以 join 语法仅适用于连接(+)符号,然后是空 string.join() ?这就是我失败的原因吧?我的理解是,''是一个字符串(我已经声明了,所以为什么要使用空引号,而不是传递字符串名称和.join()),但我不知道 + 符号的用法
    • @LanAaroon 在第一次迭代之后你的empty_string 不再是“”它现在是“hb”
    猜你喜欢
    • 2013-12-29
    • 2021-05-25
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2012-10-23
    相关资源
    最近更新 更多