gpt4 book ai didi

python - 如何在列表循环中找到特定位置的最小值和最大值?

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:36 24 4
gpt4 key购买 nike

这是我目前所拥有的:

import random
list1 = []
list2 = []

for i in range(5):
for j in range(3):
list1.append(random.randrange(1,101))
list2.append(list1)
list1=[]

for i in list2:
for j in i:
print(j, end=",")

print(" (Sum: ", sum(i), " Average: ", (sum(i)/len(i)), ")", sep="")
print()

我希望能够找到每列中最大和最小的数字。因此,例如,输出将是:

1,91,46, (Sum: 138 Average: 46.0)

82,62,21, (Sum: 165 Average: 55.0)

39,52,41, (Sum: 132 Average: 44.0)

60,69,45, (Sum: 174 Average: 58.0)

20,21,7, (Sum: 48 Average: 16.0)

Largest number of first column: 82 Smallest number of first column: 1
Largest number of second column: 91 Smallest number of second column: 21
Largest number of third column: 46 Smallest number of third column: 7

我知道最小值/最大值,有什么方法可以使用它们来获得这些结果吗?或者我必须使用不同的方法吗?任何帮助表示赞赏!

最佳答案

您可以使用 zip(*rows)

转置(交换行/列)嵌套列表
rows = [[randrange(1, 101) for col in range(5)] for row in range(3)]

for column in zip(*rows):
print(
column,
'sum:', sum(column),
'avg:', int(sum(column) / len(column)),
'min:', min(column),
'max:', max(column),
)

示例输出:

(5, 22, 95) sum: 122 avg: 40 min: 5 max: 95
(92, 88, 67) sum: 247 avg: 82 min: 67 max: 92
(97, 61, 3) sum: 161 avg: 53 min: 3 max: 97
(95, 37, 67) sum: 199 avg: 66 min: 37 max: 95
(47, 13, 29) sum: 89 avg: 29 min: 13 max: 47

如果你正在使用 numpy,你可以使用 ndarray而不是嵌套列表。使用 array.T(转置)迭代列而不是行。

for column in numpy.array(rows).T:
print(column, column.sum(), column.mean(dtype=int), column.min(), column.max())


[ 5 22 95] 122 40 5 95
[92 88 67] 247 82 67 92
[97 61 3] 161 53 3 97
[95 37 67] 199 66 37 95
[47 13 29] 89 29 13 47

关于python - 如何在列表循环中找到特定位置的最小值和最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50315688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com