如何从列表的索引值中减去最小值?

问题描述 投票:1回答:1

所以我现在有一个list,一个tuple,我想减去列表/元组中每个值的计算最小值。我用enumerate()来设置一个计数器,但我不确定这是不是最好的方法。我所知道的是,我无法直接从列表中减去列表。所以任何帮助都会很棒,抱歉我是新手。

我已经尝试过map()将函数应用于每个iterable

map(set(tuple) - set(minimum))

original_list = [['str1',2.33,7.46, 0.499],['str2', 45.55,4.77,6.22]]
tuple = [1, ('str1', 7.46,9.37,9.54,9.03,10.7)]
[2, ('str2', 2.46,9.37,9.54,9.03,10.7)]
min():
  columns = list(zip(*file))
  minimum = [min(list(x for x in column[1:] if x is not None)) for column in 
  columns

  # minimum = [7.46, 2.46]

从函数生成最小值的位置

a = tuple - minimum

理论上1,x1,x2,x3需要减去最小7.46然后2,x1,x2,x3需要在最小列表中减去2.46或min2。

换句话说,有没有办法让我可以做这样的事情,但有另一个清单?

for i in range(len(tuple)):
  tuple[i] -= corresponding minimum value from minimum()
python
1个回答
0
投票

您可以使用列表理解:

data = ('str1', 7.46,9.37,9.54,9.03,10.7)
l = [x - min(data[1:]) if type(x) == float else x for x in data] #substract minimum from x if x is a float, else leave x as it is

然而,类型的东西使它有点难看。也许,如果数据总是看起来像[“str”,float,float,float,...],你可以这样做:

data = list(data)
minimum = min(data[1:])
l = data[:1] + [x - minimum for x in data[1:]] #leave data[0] as it is, but substract minimum from each x of data[1:]
© www.soinside.com 2019 - 2024. All rights reserved.