关于使用列表的最小和最大函数

About min and max functions working with lists

我正在尝试从 list()

生成的列表中打印 min() 和 max() 值
x = [list(range(1,11))]
print(min(x))
print(max(x))

returns 原始列表两次:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 和 [1, 2, 3, 4, 5, 6 , 7, 8, 9, 10]
但是当我写

x = [1,2,3,4,5,6,7,8,9,10]
print(min(x))
print(max(x))

它returns 实际最小值和最大值:1 和 10

我错过了什么?

x = [list(range(1,11))]

正在制作 listlistlist 构造函数将 range 转换为 list,然后方括号声明另一个包含 listlist。就像在做:

x = [[1,2,3,4,5,6,7,8,9,10]]  # Note two brackets on each side

显然,只有一个元素(内部列表)的 listmaxmin 将是该单个元素。它是 list 中的 everything-est 个元素。如果你想要它相当于:

x = [1,2,3,4,5,6,7,8,9,10]

就这样:

x = list(range(1,11))  # No brackets needed; the list constructor makes a single unnested list

或者如果你真的喜欢括号语法,你可以像这样使用广义解包:

x = [*range(1,11)]  # * unpacks the range as elements of the list literal

像这样改变x;

x = list(range(1,11))

您的第一个案例是一个只有一个元素的列表:一个包含数字 1-10 的子列表

 x = [list(range(1,11))]

因此最小值和最大值只能是一个元素...

发生这种情况是因为在您的第一条语句中,您在另一个列表中创建了一个列表。将第一个语句修改为 x = list(range(1,11)),通过使用关键字列表,您已经告诉您的代码变量应该是一个列表一次,因此不需要括号。