2016-11-08 3 views
2

Я был озадачен, видя, что питон возвращает значение ИСТИНА для сравнения, как это: == «A» («A»)Сравнение кортежей 'A' == ('A'), как этого избежать?

тогда я нашел this объяснение от this вопроса.

Python сравнивает каждый элемент в кортеже с другим термином сравнения. Мой вопрос: Как я могу избежать этого? Я ищу логический оператор '==', который возвращает True для 'A' == 'A' или ('A') == ('A'), но false для 'A' == ' ('А').

+2

'('A')' не является кортежем, не так ли? 'type (('A'))' возвращает 'str'. – Psidom

+0

О, мой плохой. Я не знал, что определение одного элемента - это особый случай. –

+3

Запятая определяет кортеж, а не круглые скобки. Исключением является пустой кортеж '()', который мог бы (должен?) Был написан '(,)', но '()' не требуется для представления любого заключенного в скобки выражения. – chepner

ответ

8

Ваше «объяснение» не имеет ничего общего с вашей реальной проблемой.

('A')не a кортеж. Это просто строка. Одноэлементный кортеж определяется следующим образом: ('A',). При использовании фактического кортежа, ваше сравнение корректно возвращает значение False:

>>> 'A' == ('A',) 
False 
+2

Вы слишком быстро. –

+0

прибил его. Думаю, мне нужно более точно изучить вопрос о запятых после кортежей. – DaniPaniz

1

Правильный ответ уже там предусмотрен Daniel Roseman. Просто добавление:

>>> type("A") 
<type 'str'> 

>>> type(("A")) 
<type 'str'> 

>>> type(("A",)) 
<type 'tuple'> 
Смежные вопросы