有方法isiterable吗?到目前为止我找到的唯一解决方案是打电话
hasattr(myObj, '__iter__')
Run Code Online (Sandbox Code Playgroud)
但我不确定这是多么万无一失.
在python中有一个简单的方法来判断某些东西是不是一个序列?我试着这么做:
if x is not sequence但是python并不喜欢这样
我是Python的新手,我正在尝试检查[a,b]列表中是否存在一对l=[[a,b],[c,d],[d,e]].我搜索了很多问题,但找不到精确的解决方案.请有人能告诉我正确和最短的做法吗?
当我跑:
a=[['1','2'],['1','3']]
for i in range(3):
for j in range(3):
if [i,j] in a:
print a
Run Code Online (Sandbox Code Playgroud)
输出是空白的
那怎么实现呢?
该列表显示了你需要实现你的类方法被"视为"为序列:__getitem__,__len__,__contains__,__iter__,__reversed__,index,和count.那么为什么这个最小的实现不起作用,为什么issubclass(S, Sequence) is False呢?
from collections import *
class S(object):
def __getitem__(self, item):
raise IndexError
def __len__(self):
return 0
def __contains__(self, item):
return False
def __iter__(self):
return iter(())
def __reversed__(self):
return self
def index(self, item):
raise IndexError
def count(self, item):
return 0
issubclass(S, Iterable) # True :-)
issubclass(S, Sized) # True :-)
issubclass(S, Container) # True :-)
issubclass(S, Sequence) # False :-(
Run Code Online (Sandbox Code Playgroud)
我需要实现一个我忽略的额外方法吗?我是否误解了抽象基类?子类化当然 …
python duck-typing subclassing abstract-base-class isinstance
python ×4
duck-typing ×1
exists ×1
if-statement ×1
isinstance ×1
iterable ×1
list ×1
sequence ×1
sequences ×1
subclassing ×1