随机数生成器,不可散列的类型“列表”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随机数生成器,不可散列的类型“列表”相关的知识,希望对你有一定的参考价值。
我下面代码的目标是从随机数中提取10个数字。然后打印出大多数经常出现的数据(模式/方式)。
这是我尝试过的
i=0
a=0
import random
from time import sleep
import statistics
var1=input ("min random : ")
var2=input ("max random : ")
bb=int(var1)
ba=int(var2)
data = [[]for z in range(10)]
while i<10:
rundum=random.randint(bb,ba)
print(rundum)
data[a].append(rundum)
sleep(0.2)
i=i+1
a=a+1
tuple(data)
statistics.mode(data)
print(data)
这是结果
min random : 1
max random : 10
2
5
9
1
10
7
1
6
9
9
[[2], [5], [9], [1], [10], [7], [1], [6], [9], [9]]
Traceback (most recent call last):
File "C:UsersEzDocumentselajar random.py", line 20, in <module>
statistics.mode(data)
File "C:Program Files (x86)Thonnylibstatistics.py", line 501, in mode
table = _counts(data)
File "C:Program Files (x86)Thonnylibstatistics.py", line 252, in _counts
table = collections.Counter(iter(data)).most_common()
File "C:Program Files (x86)Thonnylibcollections\__init__.py", line 568, in __init__
self.update(*args, **kwds)
File "C:Program Files (x86)Thonnylibcollections\__init__.py", line 655, in update
_count_elements(self, iterable)
TypeError: unhashable type: 'list'
>>>
我不知道如何解决此问题预先感谢。
答案
您可以使用此:
import random
import statistics
from time import sleep
bb = int(input("min random : "))
ba = int(input("max random : "))
data = []
for i in range(10):
r = random.randint(bb, ba)
data.append(r)
sleep(0.2)
mode = statistics.mode(data)
print(data)
print("Mode: ", mode)
样本结果:
[9, 7, 8, 4, 5, 8, 2, 3, 10, 6]
Mode: 8
另一答案
为什么要这样声明data
?它应该只是data = []
,然后在for
循环中,您只需要追加到数据即可:
i=0
a=0
import random
from time import sleep
import statistics
var1=input ("min random : ")
var2=input ("max random : ")
bb=int(var1)
ba=int(var2)
data = []
while i<10:
rundum=random.randint(bb,ba)
print(rundum)
data.append(rundum)
sleep(0.2)
i=i+1
a=a+1
data = tuple(data)
print(data)
print(statistics.mode(data))
print(data)
结果:
(10, 7, 6, 3, 5, 5, 4, 1, 6, 5)
5
另一答案
尝试此代码并声明一个空列表,请分配data = []
,每当需要将数据添加到列表时,都可以使用插入或append方法。
import random
import statistics
from time import sleep
i=0
a=0
var1=input ("min random : ")
var2=input ("max random : ")
bb=int(var1)
ba=int(var2)
data = []
while i<10:
rundum=random.randint(bb,ba)
print(rundum)
data.append(rundum)
sleep(0.2)
i=i+1
a=a+1
print("Mode of given data set is {}".format(statistics.mode(data)))
以上是关于随机数生成器,不可散列的类型“列表”的主要内容,如果未能解决你的问题,请参考以下文章
Python字典:TypeError:不可散列的类型:'list'
Python - 重复数据删除问题:TypeError:不可散列的类型:'numpy.ndarray'
如何在其上制作一个简单的 Django URLconf 和 reverse() 进行测试? (获取TypeError:不可散列的类型:'list')
TypeError:使用一组 UDT 创建 Cassandra Python 驱动程序模型时不可散列的类型 UserType