как выделить числа из списка? Python

import re
def sum_by_types(items):
    num_list = [x for x in items if f'{x}'.isdigit()]
    str_list = [x for x in items if not f'{x}'.isdigit()]
    return num_list, str_list

print(sum_by_types([])) #== ("", 0)
print(sum_by_types([1, 2, 3])) #== ("", 6)
print(sum_by_types(["1", 2, 3])) #== ("1", 5)
print(sum_by_types(["1", "2", 3])) #== ("12", 3)
print(sum_by_types(["1", "2", "3"])) #== ("123", 0)
print(sum_by_types(["size", 12, "in", 45, 0])) #== ("sizein", 57)

задача: — вернуть 2 значения. Первое — это конкатенация всех строк из заданного списка. Второе представляет собой сумму всех целых чисел из заданного списка.

Не могу понять как выделить числа из списка isdigit() пробовал. Есть еще способы?


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Нужно проверять типы элементов (isinstance):

def sum_by_types(items):
    text = ''.join(filter(lambda x: isinstance(x, str), items))
    sum_ = sum(filter(lambda x: isinstance(x, int), items))
    return text, sum_
→ Ссылка