Тип проверки Python ни одного типа [дубликат]

В этом вопросе, когда я что-то искал сам!

Вот что я сделал:

def dont_repeat(x=[0,1,1,2]): # Pass a list
    from itertools import permutations as per
    uniq_set = set()
    for byt_grp in per(x, 4):
        if byt_grp not in uniq_set:
            yield byt_grp
            uniq_set.update([byt_grp])
    print uniq_set

for i in dont_repeat(): print i
(0, 1, 1, 2)
(0, 1, 2, 1)
(0, 2, 1, 1)
(1, 0, 1, 2)
(1, 0, 2, 1)
(1, 1, 0, 2)
(1, 1, 2, 0)
(1, 2, 0, 1)
(1, 2, 1, 0)
(2, 0, 1, 1)
(2, 1, 0, 1)
(2, 1, 1, 0)
set([(0, 1, 1, 2), (1, 0, 1, 2), (2, 1, 0, 1), (1, 2, 0, 1), (0, 1, 2, 1), (0, 2, 1, 1), (1, 1, 2, 0), (1, 2, 1, 0), (2, 1, 1, 0), (1, 0, 2, 1), (2, 0, 1, 1), (1, 1, 0, 2)])

В принципе, создайте набор и продолжайте добавлять к нему. Лучше, чем создавать списки и т. Д., Которые занимают слишком много памяти. Надеюсь, это поможет следующему человеку, смотрящему :-) Комментируйте набор «обновление» в функции, чтобы увидеть разницу.

245
задан thefourtheye 9 April 2015 в 16:31
поделиться

5 ответов

Итак, как я могу опросить переменную, которая является NoneType?

Использовать оператор is, например

if variable is None:

Почему это работает ?

Поскольку None является единственным одноэлементным объектом NoneType в Python, мы можем использовать оператор is для проверки того, является ли переменная имеет None в нем или нет.

Цитирование из is docs ,

Тесты is и is not для идентификации объекта: x is y является истинным тогда и только тогда, когда x и y являются одним и тем же объектом. x is not y дает обратное значение истинности.

Поскольку может быть только один экземпляр None, is будет предпочтительным способом проверки None.


Услышьте его из уст лошади

Цитата Руководство по стилю кодирования Python - PEP-008 (совместно определяемый самим Гвидо),

Сравнение с синглтонами типа None всегда должно выполняться с помощью is или is not, никогда не выполняемых операторов равенства.

353
ответ дан thefourtheye 15 August 2018 в 22:50
поделиться
  • 1
    Просто использование z = variable is None работает, если вам не нужен условный оператор if. – Devin Carpenter 11 January 2018 в 13:47

Это также можно сделать с помощью isinstance согласно ответ Алекса Холла :

>>> NoneType = type(None)
>>> x = None
>>> type(x) == NoneType
True
>>> isinstance(x, NoneType)
True

isinstance также интуитивно, но есть усложнение, которое требует line

NoneType = type(None)

, который не нужен для таких типов, как int и float.

7
ответ дан cardamom 15 August 2018 в 22:50
поделиться
if variable is None:
   print 'Is None'

-

if variable is not None:
   print 'Isn\'t None'
45
ответ дан elhoucine 15 August 2018 в 22:50
поделиться
0
ответ дан Martin Müsli 5 September 2018 в 22:39
поделиться
1
ответ дан FrancoisR 29 October 2018 в 05:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: