如何确定索引是不是为列表/数组? [复制]

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时才会被调用。

【讨论】:

谢谢。没想到这么简单:)

以上是关于如何确定索引是不是为列表/数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用numpy查找数组中元素的索引? [复制]

为啥python的列表切片不会产生索引越界错误? [复制]

确定 PHP 数组是不是使用键或索引 [重复]

为啥数组的索引/列表不以 1 开头? [复制]

如何删除数组中索引 X 处的项目? [复制]

为啥带有单个条目的python列表为-1索引和0索引提供第0个元素? [复制]