所以我现在有一个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()
您可以使用列表理解:
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:]