我有以下代码:
import numpy as np
import math as mat
list_of_numbers = {int(mat.sqrt(x)) for x in range(7)}
print(list_of_numbers)
我期望输出是从0到6的每个数字的平方根。
即,[0,1,1,1,2,2,2]
为什么Python只打印
[0, 1, 2]
我已检查过打印https://www.python-course.eu/python3_print.php
上的文档似乎没有关于打印不打印重复值的参考。有人可以帮忙吗?
答案 0 :(得分:3)
您在此处创建了set literal:
list_of_numbers = {int(mat.sqrt(x)) for x in range(7)}
设置不存储重复项。它们是用于检查可以散列的事物的成员资格的有用数据结构。
它们绝对不是列表。
要创建列表,您只需要将{
和}
换成[
和]
:
list_of_numbers = [int(mat.sqrt(x)) for x in range(7)]
答案 1 :(得分:2)
这是因为您使用的是Set而不是List。尝试:
import numpy as np
import math as mat
list_of_numbers = [int(mat.sqrt(x)) for x in range(7)]
print(list_of_numbers)
答案 2 :(得分:2)
您需要更改
list_of_numbers = {int(mat.sqrt(x)) for x in range(7)}
到
list_of_numbers = [int(mat.sqrt(x)) for x in range(7)]