【问题标题】:Python function to return concatenated string from a list, where the length of the string is more than 2 charactersPython函数从列表中返回连接的字符串,其中字符串的长度超过2个字符
【发布时间】:2020-09-16 19:55:32
【问题描述】:

新手在这里学习Python,好样的!!

作为课程的一部分,我有一个任务是编写简单的程序,但是我正在努力解决这个问题。对于列表中超过 2 个字符的所有元素,应连接起来。代码本身正在运行,但它返回列表中的第一个字符串以及超过 2 个字符的其他字符串。这是因为我编写我知道的代码的方式,但我无法找出排除第一个字符串的方法。应该使用迭代。

我的代码:

def concatenate(strings):
    start = strings[0]
    for string in strings:
        if len(string) > 2:
            start += string
    return start

print(concatenate(["a", "de", "fg", "hijk", "abc"]))

它正确连接了 hijkabc,但它也包括开头的“a”,所以我实际得到的结果是 ahijkabc。

我需要做什么?

谢谢!

【问题讨论】:

  • ["a", "de", "fg", "hijk", "abc"] 的这个示例列表的期望输出是什么?更好的是,["a", "de", "fg", "c", "abc"] 的输出应该是什么?

标签: python list iteration string-concatenation


【解决方案1】:

你已经用字符串[0]初始化了start 只需将 start ="" 初始化为空字符串即可。

def concatenate(strings):
start = ""
for string in strings:
    if len(string) > 2:
        start += string
return start

【讨论】:

  • 谢谢!我现在觉得很傻,这很容易解决!
  • 在你刚开始的时候会发生这样的事情。真正的交易是不要失去动力。
【解决方案2】:

如果我正确理解了您的要求,以下是一种方法:

from itertools import groupby

res = [''.join(g) for k, g in groupby(lst, lambda x: len(x)>1)]

所以对于lst = ["a", "de", "fg", "hijk", "abc"](你的例子)你得到:

['a', 'defghijkabc']

对于lst = ["a", "de", "fg", "b", "abc"],你会得到:

['a', 'defg', 'b', 'abc']

【讨论】:

    【解决方案3】:

    这是您正在寻找的解决方案

    def concatenate(strings):
        return ''.join(filter(lambda x: len(x) >2, strings))
    

    【讨论】:

      【解决方案4】:

      知道了!谢谢 - 我只需要一个空字符串开头,所以

      start = ''
      

      而不是

      start = strings[0]
      

      就这么简单,现在我觉得很傻!但是,这都是一个学习曲线。 感谢大家的帮助!

      【讨论】:

        【解决方案5】:

        用空字符串初始化start变量。

        def concatenate(strings):
            start = ''
            for string in strings:
                if len(string) > 2:
                    start += string
            return start
        

        【讨论】:

        • 你的问题究竟是什么?
        猜你喜欢
        • 1970-01-01
        • 2017-05-05
        • 1970-01-01
        • 1970-01-01
        • 2019-12-23
        • 1970-01-01
        • 2017-04-24
        • 2012-09-08
        • 2022-08-10
        相关资源
        最近更新 更多