Как извлечь строки из кортежей или списков Python? - PullRequest
1 голос
/ 24 апреля 2019

Я не понимаю, почему это не работает, но я новичок в программировании, поэтому я могу делать несколько простых ошибок.

def tuplasemstr(t):
    tup1 = []
    n = 0
    while n <= 2 and type(t[n],) != str:
        list.append(tup1, t[n])
        n = n + 1

    return tuple(tup1)

Я ожидал что-то вроде:

t = ("a",3,2.1)

Вывод:

(3,2.1)

Ответы [ 2 ]

3 голосов
/ 24 апреля 2019

Решение, данное @blhsing, является лучшим. Но если вы хотите, чтобы ваш код работал, вы можете сделать это:

def tuplasemstr(t):
    tup1 = []
    n = 0
    while n < len(t):
        if not isinstance(t[n], str):
            list.append(tup1, t[n])
        n = n + 1
    return tuple(tup1)

t = ('a', 3, 2.1, 'c', 32)
print(tuplasemstr(t)) # (3, 2.1, 32)

Чтобы проверить строки, вы должны использовать isinstance внутри цикла while. Кроме того, не задавайте длину жестко с помощью n <= 2, используйте n < len(t).

2 голосов
/ 24 апреля 2019

Если вы хотите отфильтровать строковые элементы в кортеже, вы можете использовать выражение генератора с условием, которое проверяет, не является ли элемент экземпляром строки:

def tuplasemstr(t):
    return tuple(i for i in t if not isinstance(i, str))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...