Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python函数从列表中返回连接的字符串,其中字符串的长度超过2个字符_Python_List_Iteration_String Concatenation - Fatal编程技术网

Python函数从列表中返回连接的字符串,其中字符串的长度超过2个字符

Python函数从列表中返回连接的字符串,其中字符串的长度超过2个字符,python,list,iteration,string-concatenation,Python,List,Iteration,String Concatenation,在这里学习Python的新手,要乖 作为我课程的一部分,我有一项任务是编写简单的程序,但有一项任务我正在努力完成。对于列表中具有2个以上字符的所有元素,应将其连接起来。代码本身正在工作,但它将返回列表中的第一个字符串以及超过2个字符的其他字符串。这是因为我编写代码的方式,我知道,但我无法找到排除第一个字符串的方法。应利用迭代 我的代码: def concatenate(strings): start = strings[0] for string in strings:

在这里学习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

我需要做什么


谢谢

您已经用字符串[0]初始化了start 只需将start=”“初始化为空字符串

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

用空字符串初始化
start
变量

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

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

from itertools import groupby

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

因此,对于
lst=[“a”、“de”、“fg”、“hijk”、“abc”]
(您的示例)您可以得到:

对于
lst=[“a”,“de”,“fg”,“b”,“abc”]
您可以得到:

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

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

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

明白了!谢谢-我只需要一个空字符串作为开始,所以

start = ''
而不是

start = strings[0]
就这么简单,现在我觉得自己很傻!但是,这都是一个学习曲线。
谢谢你的帮助

您的示例列表的期望输出是什么?更好的是,
[“a”、“de”、“fg”、“c”、“abc”]
的输出应该是什么?您的问题是什么?谢谢!我现在觉得自己很傻,这是一个很容易解决的问题!当你刚开始的时候,这些事情都会发生。真正的问题是不要失去动力。