通过列表列表中的索引计算最小或最大

时间:2018-06-28 09:48:56

标签: python python-3.x list dictionary

list_of_elements = [1255, 1256, 1257, 1258, 1259]
print(components[1255],components[1256],components[1257],components[1258],components[1259])

打印输出为:

[481, 498, 5142, 5157] [481, 497, 5192, 5199] [481, 498, 5219, 5238] [481, 484, 5239, 5242] [481, 487, 5269, 5271)]

我想做的是获取第一个索引(0)中最小的数目,第二个索引中的最大值,第三个索引中的最小值,第四个索引中的最大值,所以在这种情况下我将得出结论:

[481,498,5142,5271]

因此,再次,基本上,我将获得一个元素列表(在这种情况下,它是list_of_elements,可能有0个值,直到未知),然后我必须输入该列表的元素作为键字典components并执行上述步骤。

2 个答案:

答案 0 :(得分:2)

这是一种通过调度程序字典和几个列表推导来构造逻辑的方法:

list_of_elements = [1255, 1256, 1257, 1258, 1259]

# extract data via list comprehension
L = [components[i] for i in list_of_elements]

# defined explicitly for demonstration
L = [[481, 498, 5142, 5157], [481, 497, 5192, 5199],
     [481, 498, 5219, 5238], [481, 484, 5239, 5242],
     [481, 487, 5269, 5271]]

from operator import itemgetter

# define dispatcher dictionary
funcs = {0: min, 1: max}

# apply via list comprehension
res = [funcs[i%2](map(itemgetter(i), L)) for i in range(len(L[0]))]

print(res)

[481, 498, 5142, 5271]

说明

  • i%2返回0或1,具体取决于您的索引是偶数还是奇数。
  • funcs[i%2]返回min字典中定义的maxfuncs
  • map(itemgetter(i), L)返回i中每个列表的第L个元素上的迭代器。
  • 在此迭代器上应用funcs[i%2]会返回最小值或最大值。

答案 1 :(得分:0)

此解决方案在列表理解中使用三元语句和.btn-scope1 { text-transform:uppercase; /*padding:4px 15px;*/ font-weight:600; -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; border-radius: 3px; font-size: 12px; min-width: 100px; } + enumerate

zip