Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:查找产品的组成时,键入“list”不可损坏_Python - Fatal编程技术网

Python TypeError:查找产品的组成时,键入“list”不可损坏

Python TypeError:查找产品的组成时,键入“list”不可损坏,python,Python,我读到这样一个问题 A负责确定B的三个孩子的年龄 儿童B告诉A孩子年龄的乘积是36。考虑之后 这个线索,A回答说需要另一个线索,所以B告诉A孩子的年龄总和。同样,A回答说需要另一条线索,所以B告诉A 最大的孩子会弹钢琴。听了这条线索后,A告诉B孩子的年龄 三个孩子。 这三个孩子多大了 深入分析产品为36并已试用过的三元组 In [4]: ll = [] ...: for x in range(1,37): ...: for y in range(1, 37): ...:

我读到这样一个问题

A负责确定B的三个孩子的年龄 儿童B告诉A孩子年龄的乘积是36。考虑之后 这个线索,A回答说需要另一个线索,所以B告诉A孩子的年龄总和。同样,A回答说需要另一条线索,所以B告诉A 最大的孩子会弹钢琴。听了这条线索后,A告诉B孩子的年龄 三个孩子。 这三个孩子多大了

深入分析产品为36并已试用过的三元组

In [4]: 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)
   ...:                 s = set(ll)
   ...:                 print(s)
   ...:                 
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-cc3ad95c0d1b> in <module>()
      6                 l = sorted([x, y,z])
      7                 ll.append(l)
----> 8                 s = set(ll)
      9                 print(s)
     10 

TypeError: unhashable type: 'list'

我对不可损坏的类型列表感到非常困惑。

我不明白您为什么需要一套。也许你可以试试:

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)
                #s = set(ll)
                print(l)
哪些产出:

[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]


我不明白你为什么需要一套。也许你可以试试:

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)
                #s = set(ll)
                print(l)
哪些产出:

[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]

set对象是通过哈希表实现的。这意味着存储在其中的所有值都必须是可哈希的,也就是说,hashvalue必须有效

您正试图从包含其他列表的列表中构建一个集合。不幸的是,列表是不可散列的,因此您会得到您在标题中描述的错误

有几种方法可以解决这个问题。最简单的方法是使用元组而不是内部列表。元组是可散列的,只要它们的所有内容也是可散列的,整数也是可散列的,所以它们应该适合您

尝试将ll.appendl更改为ll.appendtuplel,您的代码应该可以工作。

set对象是通过哈希表实现的。这意味着存储在其中的所有值都必须是可哈希的,也就是说,hashvalue必须有效

您正试图从包含其他列表的列表中构建一个集合。不幸的是,列表是不可散列的,因此您会得到您在标题中描述的错误

有几种方法可以解决这个问题。最简单的方法是使用元组而不是内部列表。元组是可散列的,只要它们的所有内容也是可散列的,整数也是可散列的,所以它们应该适合您


尝试将ll.appendl更改为ll.appendtuplel,您的代码应该可以工作。

您的ll是列表的列表您的ll是列表的列表