Уведомления

Группа в Telegram: @pythonsu

#1 Май 6, 2013 01:20:26

Wahlberg
От: Самара
Зарегистрирован: 2012-12-06
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Резиновый массив.

Проблема такая, нужно создать резиновый массив данных, почитал о листе, по идеи подходит, но как его создать такой хороший я так и не понял. Суть в том что мне нужен двумерный массив и свободная индексация по нему, либо создать его, допустим, размером 1000х1000, как-то я не очень впечтлён был способом со скобочками для решения таких проблем. Тип данных вводимый в массив должен быть striing.

Спасибо.



С уважением,
Wahlberg!

Skype: hukutatlt
Город: Самара

Офлайн

#2 Май 6, 2013 02:52:41

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Резиновый массив.

Решение “в лоб”

l=[]
for i in xrange(1000):
    l.append(['']*1000)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Май 6, 2013 12:05:44

Wahlberg
От: Самара
Зарегистрирован: 2012-12-06
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Резиновый массив.

спасибо



С уважением,
Wahlberg!

Skype: hukutatlt
Город: Самара

Офлайн

#4 Май 6, 2013 21:02:13

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

Резиновый массив.

JOHN_16
Решение “в лоб”
А почему тогда не
n=1000
[[""] * n] * n
Подумайте, может вам больше подойдет более резиновая реализация
a = {}
a[(5,8)] = "asdas"
print( a[(5,8)] )



Отредактировано doza_and (Май 7, 2013 07:09:45)

Офлайн

#5 Май 7, 2013 02:01:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Резиновый массив.

doza_and
А почему тогда не
n=1000
[[""]*n]*n
>>> n = 10
>>> m = [[""] * n] * n
>>> m
[['', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '']]
>>> m[0][0] = None
>>> m
[[None, '', '', '', '', '', '', '', '', ''], [None, '', '', '', '', '', '', '', '', ''], [None, '', '', '', '', '', '', '', '', ''], [None, '', '', '', '', '', '', '', '', ''], [None, '', '', '', '', '', '', '', '', ''], [None, '', '', '', '', '', '', '', '', ''], [None, '', '', '', '', '', '', '', '', ''], [None, '', '', '', '', '', '', '', '', ''], [None, '', '', '', '', '', '', '', '', ''], [None, '', '', '', '', '', '', '', '', '']]
>>>



Офлайн

#6 Май 7, 2013 07:08:39

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

Резиновый массив.

py.user.next
А почему тогда не
Спасибо, забавно, надо обдумать.
>>> l=map(list,[("",)*3]*3)
>>> l
[['', '', ''], ['', '', ''], ['', '', '']]
>>> map(id,l)
[19461704, 19461824, 19461744]

Я конечно предпочитаю другой вариант. Его пригодность зависит от целей ТС.
import numpy as np
l=np.zeros((3,3),dtype=np.dtype(object))



Офлайн

#7 Май 7, 2013 07:19:06

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Резиновый массив.

>>> n = 10
>>> m = [[0] * n for _ in range(n)]
>>> m[0][0] = 1
>>> m
[[1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
>>>

numpy надо устанавливать
а map даёт список только во втором питоне



Офлайн

#8 Май 7, 2013 09:35:47

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Резиновый массив.

в питоне есть встроенные массивы

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version