Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 7, 2014 20:46:00

sunpmd
Зарегистрирован: 2014-08-07
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

k - мерный список

Здравствуйте, подскажите пожалуйста:
Как создать k - мерный список, например со всеми нулями по значению k
Например для k = 1, список:{0, 0}
для k = 2, список:{{0, 0}, {0, 0}} и тд
подскажите пожалуйста хотя бы идею, спасибо заранне.

Офлайн

#2 Авг. 7, 2014 22:12:47

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

k - мерный список

а почему у вас списки из 2 элементов?

def ml(n):
if n==1:
return [0,0]
else:
return [ml(n-1),ml(n-1)]



Отредактировано doza_and (Авг. 7, 2014 22:13:14)

Офлайн

#3 Авг. 7, 2014 22:28:44

sunpmd
Зарегистрирован: 2014-08-07
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

k - мерный список

нет , смотри: это должно работать для н-мерного списка
у тебя функция одношаговая

Офлайн

#4 Авг. 7, 2014 22:54:14

sunpmd
Зарегистрирован: 2014-08-07
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

k - мерный список

а нет прости реал работает спс за идею может сработает….

Офлайн

#5 Авг. 8, 2014 06:42:50

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

k - мерный список

sunpmd
вот

a = [[0,0] for i in xrange(k)]
Python для экспертов??? ахаха. Вы не в тот раздел написали!



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Авг. 8, 2014 06:50:43)

Офлайн

#6 Авг. 8, 2014 06:48:33

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

k - мерный список

doza_and
а что если n < 0?



————————————————
-*- Simple is better than complex -*-

Офлайн

#7 Авг. 8, 2014 09:44:54

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

k - мерный список

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]]]



Отредактировано doza_and (Авг. 8, 2014 09:53:18)

Офлайн

#8 Авг. 8, 2014 10:33:02

sunpmd
Зарегистрирован: 2014-08-07
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

k - мерный список

Да 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}} и тд
Если сможете помочь буду максимально благодарен, заранее спасибо.

Офлайн

#9 Авг. 8, 2014 14:49:40

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

k - мерный список

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'



Отредактировано Budulianin (Авг. 8, 2014 14:51:59)

Офлайн

#10 Авг. 8, 2014 15:08:42

sunpmd
Зарегистрирован: 2014-08-07
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

k - мерный список

хм это не работает, ошибка в типе:'float' object cannot be interpreted as an integer
в 5 строке

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version