Python функция для возврата объединенной строки из списка, где длина строки превышает 2 символа - PullRequest
0 голосов
/ 29 мая 2020

Newb ie обучение Python здесь, будь любезен !!

У меня есть задание в рамках моего курса по написанию простых программ, но есть одно, с которым я борюсь. Все элементы в списке, содержащие более двух символов, должны быть объединены. Сам код работает, но он возвращает первую строку в списке, а также другие строки, длина которых превышает 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"]))

Он правильно объединяет hijkab c, но он также включает в себя букву «a» в начале, так что на самом деле результат получение - это ahijkab c.

Что мне нужно делать?

Спасибо!

Ответы [ 5 ]

0 голосов
/ 29 мая 2020

Понятно! Спасибо - мне просто нужна была пустая строка для начала, поэтому

start = ''

вместо

start = strings[0]

Это было так просто, и теперь я чувствую себя глупо! Но это все время обучения. Спасибо за помощь!

0 голосов
/ 29 мая 2020

Это решение, которое вы ищете

def concatenate(strings):
    return ''.join(filter(lambda x: len(x) >2, strings))
0 голосов
/ 29 мая 2020

Инициализировать переменную start пустой строкой.

def concatenate(strings):
    start = ''
    for string in strings:
        if len(string) > 2:
            start += string
    return start
0 голосов
/ 29 мая 2020

Если я правильно понял ваше требование, вот способ сделать это:

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']
0 голосов
/ 29 мая 2020

Вы инициализировали start со строками [0] Просто инициализируйте start = "" как пустую строку.

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