Найти - Пользователи
Полная версия: k - мерный список
Начало » Python для экспертов » k - мерный список
1 2
sunpmd
Здравствуйте, подскажите пожалуйста:
Как создать k - мерный список, например со всеми нулями по значению k
Например для k = 1, список:{0, 0}
для k = 2, список:{{0, 0}, {0, 0}} и тд
подскажите пожалуйста хотя бы идею, спасибо заранне.
doza_and
а почему у вас списки из 2 элементов?
def ml(n):
if n==1:
return [0,0]
else:
return [ml(n-1),ml(n-1)]
sunpmd
нет , смотри: это должно работать для н-мерного списка
у тебя функция одношаговая
sunpmd
а нет прости реал работает спс за идею может сработает….
terabayt
sunpmd
вот
a = [[0,0] for i in xrange(k)]
Python для экспертов??? ахаха. Вы не в тот раздел написали!
terabayt
doza_and
а что если n < 0?
doza_and
terabayt
а что если n <= 0?
Что что. Бесконечная рекурсия и падение. Адекватная реакция на некорректный аргумент. Но допустимость аргументов надо проверять снаружи а не внутри рекурсии.

Если задать большое n тоже ничего хорошего не получится.

Решать что он хочет топикстартеру но
>>> [[0,0] for i in xrange(3)]
[[0, 0], [0, 0], [0, 0]]
А мне казалось он хочет вот это:
[[[0, 0], [0, 0]], [[0, 0], [0, 0]]]
Я бы предпочел решение:
>>> import numpy as np
>>> np.zeros((2,)*3,dtype='i').tolist()
[[[0, 0], [0, 0]], [[0, 0], [0, 0]]]
sunpmd
Да doza_end, спасибо это действительно то, чего я хотел.
Просто главная задача у меня такая:
Дано натуральное число k . Сделайте k -мерный список размера 2 по каждому измерению, то есть общее число элементов в списке должно быть 2в степени k , но здесь формула заполнения такая: каждый элемент должен иметь в себе значение его номера то есть, если k = 4, то A{0}{0}{1}{0} = 0010 и тд
Пример что должно получаться:
k = 1: {0, 1}
k = 2: {{00, 01},{10, 11}} и тд
Если сможете помочь буду максимально благодарен, заранее спасибо.
Budulianin
from itertools import product
def get_seq(n):
    values_lst = iter(map(''.join, product(*[('0', '1')]*n)))
    for i in xrange(n, 0, -1):
        lst1, lst2 = [], []
        for j in xrange(2**i/2):
            lst1.append(next(values_lst))
            lst2.append(next(values_lst))
        values_lst = iter(zip(lst1, lst2))
    return list(values_lst)[0]

>>> get_seq(4)[0][0][1][0]
'0010'
sunpmd
хм это не работает, ошибка в типе:'float' object cannot be interpreted as an integer
в 5 строке
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB