如何确定索引是不是为列表/数组? [复制]
Posted
技术标签:
【中文标题】如何确定索引是不是为列表/数组? [复制]【英文标题】:How do I determine if an index is a list/array or not? [duplicate]如何确定索引是否为列表/数组? [复制] 【发布时间】:2020-02-01 06:54:14 【问题描述】:我实际上是在尝试确定指定索引是否为列表。我有一个嵌入到索引中的列表。
这是我目前所拥有的
if len(hashTable[hashed-1])>1:
hashTable[hashed-1].append(inVal)
else:
tempTable = [hashTable[hashed-1], inVal]
hashTable[hashed-1] = tempTable
print(inVal,hashed)
print(hashTable)
列表的输出是:(0 和 10 无关)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [1, 3], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]
错误是:
if len(hashTable[hashed-1])>1:
TypeError: object of type 'int' has no len()
【问题讨论】:
hashTable[hashed-1]
是一个 int,而不是一个列表,因此会出现错误,请尝试 if isinstance(hashTable[hashed-1], list) and len(hashTable[hashed-1]) > 1
看我的评论或者@Massifox给出的答案
谢谢,if isinstance(hashTable[hashed-1], list) 成功了
【参考方案1】:
你必须使用isinstance,来检查你的对象是否是一个列表类型,如下:
isinstance(hashTable[hashed-1], list)
在你的情况下:
if isinstance(hashTable[hashed-1], list) and len(hashTable[hashed-1]) > 1
Python 使用惰性评估来评估此 if 语句中的条件。所以len(hashTable[hashed-1])
只有在isinstance(hashTable[hashed-1], list)
是True
时才会被调用。
【讨论】:
谢谢。没想到这么简单:)以上是关于如何确定索引是不是为列表/数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章