Как я могу определить любое количество переменных без предварительной установки числа? - PullRequest
0 голосов
/ 24 ноября 2011

Я хочу быть в состоянии сделать что-то вроде этого:

__ _ ____ [кнопка]

текст []

text2 []

text3 []

и так далее. __ - это пространство для ввода текста пользователем. Когда они нажимают кнопку, этот текст добавляется выше, где написано text [], а все остальное перемещается вниз. Я думал, что у меня есть класс для строки текста, и каждый раз, когда пользователь добавляет больше текста, он просто делает новую итерацию этого класса. Проблема в том, что я не знаю, как определить бесконечное количество переменных. Есть ли способ сказать что-то вроде:

for i in range (0, number):
    g + i = Text(i)

Так что, если бы число было 5, оно вывело бы g0, g1, g2, g3, g4 и g5?

Я думал о создании массива, но столкнулся со следующей проблемой:

Я мог бы сделать массив длиной 6 и сделать:

for i in range(0, 5):
    array[i] = Text(i)

но тогда я не думаю, что возможно добавить 7-й позже, потому что я считаю, что как только длина массива установлена, ее нельзя изменить.

Подводя итог: мне нужен способ создать любое количество переменных, а затем добавить в любое время еще больше, сколько я захочу, в любое время.

Ответы [ 3 ]

3 голосов
/ 24 ноября 2011

Я считаю, что после установки длины массива его нельзя изменить.

Использовать список и его член append:

array.append(Text(5))

Я не уверен, что вы действительно использовали массивы Python из пакета или списков array, но вы должны использовать последний.Списки Python реализованы в виде динамических массивов, а не связанных списков.Они кажутся идеально подходящими для этой проблемы, как вы ее описали.

2 голосов
/ 24 ноября 2011

Вы, вероятно, хотите список , а не массив . Оба существуют в Python (списки в ядре, массивы в модуле array) и оба имеют переменную длину. Чтобы создать список с нужными строками, используйте

[Text(i) for i in range(0, 5)]

(что называется пониманием списка . Найдите этот термин для получения дополнительной информации.)

0 голосов
/ 24 ноября 2011

Вам может быть проще использовать словарь:

g={}
for i in range (0, number):
  g[i] = Text(i)
...