关于使用列表的最小和最大函数
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))]
正在制作 list
的 list
; list
构造函数将 range
转换为 list
,然后方括号声明另一个包含 list
的 list
。就像在做:
x = [[1,2,3,4,5,6,7,8,9,10]] # Note two brackets on each side
显然,只有一个元素(内部列表)的 list
的 max
和 min
将是该单个元素。它是 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))
,通过使用关键字列表,您已经告诉您的代码变量应该是一个列表一次,因此不需要括号。
我正在尝试从 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))]
正在制作 list
的 list
; list
构造函数将 range
转换为 list
,然后方括号声明另一个包含 list
的 list
。就像在做:
x = [[1,2,3,4,5,6,7,8,9,10]] # Note two brackets on each side
显然,只有一个元素(内部列表)的 list
的 max
和 min
将是该单个元素。它是 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))
,通过使用关键字列表,您已经告诉您的代码变量应该是一个列表一次,因此不需要括号。