TypeError:不可用类型:找到产品组成时的'list'


满目山河
2025-03-08 09:17:10 (16天前)


我读过这样的问题
A人负责确定人的年龄B三
儿童。 B告诉A,孩子们的年龄是36岁。考虑后
这个 …

3 条回复
  1. 0# ⑩Ⅵ嵗D夨憶 | 2019-08-31 10-32



    我很困惑为什么你需要一个

    set()

    。也许你可以试试:




    1. ll = []
      for x in range(1,37):
      for y in range(1, 37):
      for z in range(1, 37):
      if x y z == 36:
      l = sorted([x, y,z])
      ll.append(l)

    2.             #s = set(ll)
    3.             print(l)
    4. </code>


    哪个输出:




    [1,1,36]
    [1,2,18]
    [1,3,12]
    [1,4,9]
    [1,6,6]
    [1,4,9]
    [1,3,12]
    [1,2,18]
    [1,1,36]
    [1,2,18]
    [2,2,9]
    [2,3,6]
    [2,3,6]
    [2,2,9]
    [1,2,18]
    [1,3,12]
    [2,3,6]
    [3,3,4]
    [3,3,4]
    [2,3,6]
    [1,3,12]
    [1,4,9]
    [3,3,4]
    [1,4,9]
    [1,6,6]
    [2,3,6]
    [2,3,6]
    [1,6,6]
    [1,4,9]
    [2,2,9]
    [1,4,9]
    [1,3,12]
    [1,3,12]
    [1,2,18]
    [1,2,18]
    [1,1,36]



  2. 1# v-star*위위 | 2019-08-31 10-32



    一个

    set

    object是用哈希表实现的。这意味着您存储在其中的所有值必须是可清除的(意思是,

    hash(value)

    必须工作)。



    你正试图建立一个

    set

    从包含其他列表的列表中。不幸的是,列表不可清除,因此您会收到标题中描述的错误。



    有几种方法可以解决此问题。最简单的是使用a

    tuple

    而不是你的内部列表。只要它们的所有内容都是可以清洗的(元素是可以清洗的,所以它们应该适合你),元组是可以清洗的。



    尝试改变

    ll.append(l)



    ll.append(tuple(l))

    你的代码应该有效。


登录 后才能参与评论