我需要做的是「美眉」在一定的百分比在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]]
輸出是在列表清單!有沒有簡單的方法通過重寫函數來消除這種情況?
我不明白你如何從'l1'上面計算'l2'。例如,爲什麼'2'仍然是'2'? – pts
如果您澄清一個好的解決方案需要具備哪些屬性,則可以更輕鬆地得到答案。例如,這個更簡單的解決方案有什麼問題:'l2 = [x1.01 for x in l1]'? – pts
如果您的應用程序存在錯誤,則可能需要修復該錯誤,而不是嘗試解決輸入值問題。 – pts