Я пытаюсь найти стандартное отклонение для разных списков и написал код, как показано ниже
Код 1:
from statistics import stdev
def test_var_args(a,b,c):
std = []
myZip=zip(argv)
list_of_lists = [list(elem) for elem in list(myZip)]
print(list_of_lists)
i = 0
for i in range(len(list_of_lists)):
std.append(stdev(list_of_lists[i]))
return std
Ввод :
a=[1,2,3,4]
b=[2,4,1,6]
c=[1,7,2,4]
test_var_args(a,b,c)
При вышеуказанном вводе код дал мне ожидаемые результаты.
Вывод :
[[1, 2, 1], [2, 4, 7], [3, 1, 2], [4, 6, 4]]
[0.5773502691896257, 2.516611478423583, 1.0, 1.1547005383792515]
Поскольку мое требование состоит в том, чтобы пройтибольше списков и найти стандартное отклонение, я использовал * argv и изменил мой код, как показано ниже -
Модифицированный код:
def test_var_args(*argv):
print("the positional arguments are:", argv)
std = []
myZip=zip(argv)
list_of_lists = [list(elem) for elem in list(myZip)]
print(list_of_lists)
i = 0
for i in range(len(list_of_lists)):
std.append(stdev(list_of_lists[i]))
return std
Выход:
the positional arguments are: ([1, 2, 3, 4], [2, 4, 1, 6], [1, 7, 2, 4])
[[[1, 2, 3, 4]], [[2, 4, 1, 6]], [[1, 7, 2, 4]]]
Traceback (most recent call last):
File "<ipython-input-106-3d2d4dcb9408>", line 18, in <module>
test_var_args(a,b,c)
File "<ipython-input-106-3d2d4dcb9408>", line 10, in test_var_args
std.append(stdev(list_of_lists[i]))
File "C:\ProgramData\Anaconda3\lib\statistics.py", line 650, in stdev
var = variance(data, xbar)
File "C:\ProgramData\Anaconda3\lib\statistics.py", line 588, in variance
raise StatisticsError('variance requires at least two data points')
StatisticsError: variance requires at least two data points
Как убрать лишние квадратные скобки из измененного вывода кода, чтобы «StatisticsError» не возникало