Как убрать дополнительные / внешние квадратные скобки для списков, которые формируются функцией 'zip' - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь найти стандартное отклонение для разных списков и написал код, как показано ниже

Код 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» не возникало

...