【问题标题】: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) 成功了

标签: python arrays list indexing


【解决方案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时才会被调用。

【讨论】:

  • 谢谢。没想到这么简单:)
猜你喜欢
  • 2017-04-13
  • 1970-01-01
  • 2011-07-22
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 1970-01-01
相关资源
最近更新 更多