我需要做的是将l1中的值“压碎”一些百分比,以便它们更接近,这样,如果数组l1是。。。你知道吗
l1 =[10,20,30,40,50,60,70,80,90,100]
那么l2可能是。。。
l2 = [12.5, 25.0, 37.5, 50.0, 62.5, 45.0, 52.5, 60.0, 67.5, 75.0]
这可以在一个简单的脚本上完成,例如。。。你知道吗
for i in l1:
if i <= 50:
i = (i*1.25)
l2.append(i)
print(i)
elif i >= 50:
i = (i*0.75)
l2.append(i)
print (l2)
因此,这意味着我需要把所有的项目更紧密地放在一起-理想的百分位(印刷)。当你有这样一个列表的时候问题就出现了。。。你知道吗
l1 =[4,2,3,4,3,6,4,8.6,10,7,12,4,14,15,26,14,15,16,10]
然后,我需要做的是将所有的项分散地(以一定的百分比)放在一起,但是在一个循环中。我需要“压缩”或“压碎”数组的值,缩小每个数字之间的范围,从最小到最大,从最大到最小(接近中间值)。我不能只除以整个列表,因为范围保持不变。你知道吗
我认为一种方法(我现在正在研究)是(a)找到l1的中间值,(b)从l1中最小和最大的项目开始,增加该项目价值的10%,或减少该项目价值的10%(在最大项目的情况下),然后处理同一循环中的第二小项和最大项(以避免脚本两次遍历同一个“较小的变量”)。你知道吗
这意味着列出从最大到最小的值,同时保持它们在数组中的位置(这很重要),然后搜索该列表并对数组l1的每个对应值进行更改。你知道吗
请注意提议的解决方案。。。一次迭代。。。你知道吗
import statistics
a = [4, 3, 3, 4, 5, 1, 31, 321]
input_scope = 1.1
def scouter (input_list, scope):
mean = statistics.mean(input_list)
searchpositions = []
for x, i in enumerate(input_list):
print (x, i)
if i == max(input_list) or i == min(input_list):
searchpositions.append(x)
for i in searchpositions:
input_list[i] = [(input_list[i] - mean) / scope + mean]
return (input_list)
print(scouter((a), input_scope))
给了我我需要的,有点。。。你知道吗
[4, 3, 3, 4, 5, [5.13636363636364], 31, [296.0454545454545]]
输出是列表中的列表!有没有一种简单的方法可以通过重新编写函数来消除这个问题?你知道吗
只是向中间点靠拢?你知道吗
为什么不在你的单子里找出最低的数字,然后把整个单子除以那个数字呢?或者任何你想要的号码。你知道吗
如果您想这样做,请使用
min()
查找列表中的最低数字。你知道吗相关问题 更多 >
编程相关推荐