使用" print"时会出现以下行为。在Python中

时间:2017-10-23 03:27:44

标签: python list-comprehension

我有以下代码:

 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

上的文档

似乎没有关于打印不打印重复值的参考。有人可以帮忙吗?

3 个答案:

答案 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)]