我对编程相当陌生,现在我想用 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/