как понимать индексы в списках - PullRequest
0 голосов
/ 05 марта 2020

Я новичок в Python (3 недели) Я работаю с этим списком a = ["cars", "house", "boat", "family", 5] моя путаница начинается, когда я набираю следующее: a[0] == str, который возвращает False или a[0] == "cars" однако, когда я пишу type(a[0]) Я получаю str. Пожалуйста, дайте мне понять

А также в приведенном выше списке, как я могу печатать только строки и исключать целые числа или числа с плавающей запятой?

Ответы [ 3 ]

3 голосов
/ 05 марта 2020

a[0] равно "cars", что не равно str:

>>> a[0]
'cars'
>>> a[0] == "cars"
True
>>> "cars" == str
False

Если вы хотите проверить, является ли тип из a[0] равным str, вы можете вызвать * функцию * 1011 или использование isinstance

>>> type(a[0]) == str
True
>>> isinstance(a[0], str)
True

Итак, вы сделали точка отсчета ошибка : вы хотите, чтобы проверить тип вЕЩЬ, но вы на самом деле тестировали саму вещь.

На человеческих языках вы можете говорить такие вещи, как «Я спросил у службы поддержки» , но в языках программирования вы должны быть точными: вы спросил человека в службе поддержки, вы не спросили фактическую службу.

1 голос
/ 05 марта 2020

Путь к go обычно проверяется с помощью isinstance(...) и формируется новый список:

a = ["cars", "house", "boat", "family", 5]
only_strings = [item for item in a if isinstance(item, str)]

print(only_strings)
0 голосов
/ 05 марта 2020

Это оценивается как True

type(a[0]) == str

Это также True

a[0] == "cars"

Объяснение: a [0] возвращает первый элемент списка, который является "cars".

type (a [0]) возвращает тип первого элемента. Первый элемент - «автомобили», поэтому тип («автомобили») - это стр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...