Python 花旗骰 : Creating a list with sets. 意外类型

标签 python list types set

我对编程相当陌生,现在我想用 Python 创建一个简单的双骰子游戏。 然而,我立即遇到了问题。我想创建一个包含 12 个元素的列表,然后将它们全部设为空集。

roll = [i for i in range(12)]   
for i in roll:  
   roll[i] = {}  
print(roll)

当然可以,但是有一些问题。它在 for 循环中指示 i 并表示意外的类型,这让我认为有一种更合法的方法可以做到这一点,我想知道为什么它不起作用。我首先通过更改函数进行了测试,以滚动 12 组的列表,当然它避免了问题,但并没有让我了解有关此问题的任何信息。

最佳答案

roll = [i for i in range(12)]

roll 是一个整数列表,从 0 到 11(含)。

for i in roll:

对于列表中的每个整数...

roll[i] = {} 

将当前整数视为列表的索引,并用字典替换该索引处的整数(文字 {} 不是集合)。这恰好按照您预期的方式工作,因为列表中的整数恰好与它们在列表中出现的索引值相同。

整个事情从一开始就是多余的 - 您不需要创建 12 个整数来为稍后的集合“分配”空间,只需在列表理解中创建集合:

roll = [set() for _ in range(12)]

关于Python 花旗骰 : Creating a list with sets. 意外类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60020057/

相关文章:

python - 用dask对非常大的数据进行排序?

python - Pygame 绘图旋转 90 度

list - 实现与递归函数相等的函数

python zip 2长列表作为字典截断错误

c++ - 列表迭代器错误 : "no match for operator+" ,

python - Mykrobe 预测器 JSON 到 TSV 转换器

python - 我可以告诉 Python 的多处理池不要走得太远吗?

php - 无法在 PHP 中设置变量类型

haskell - 如何在 Haskell 中表示这种类型

java - 减去 System.currentTimeMillis() 得到零