Одно возможное решение, полезно, если вы хотите не только удалить некоторые вещи, но и сделать что-то со всеми элементами в одном цикле:
alist = ['good', 'bad', 'good', 'bad', 'good']
i = 0
for x in alist[:]:
if x == 'bad':
alist.pop(i)
i -= 1
# do something cool with x or just print x
print(x)
i += 1
Это не то, как вы делаете что-то на Java. В Java нет динамических переменных. Переменные Java должны быть объявлены в исходном коде (*). Период.
В зависимости от того, чего вы пытаетесь достичь, вы должны использовать массив, List
или Map
; например,
int n[] = new int[3];
for (int i = 0; i < 3; i++) {
n[i] = 5;
}
List<Integer> n = new ArrayList<Integer>();
for (int i = 1; i < 4; i++) {
n.add(5);
}
Map<String, Integer> n = new HashMap<String, Integer>();
for (int i = 1; i < 4; i++) {
n.put("n" + i, 5);
}
Можно использовать динамическое отражение для обозначения переменных , которые были объявлены в исходном коде. Однако это работает только для переменных, являющихся членами класса (т. Е. Статических полей и полей экземпляра). Он не работает для локальных переменных. См. Пример «быстрый и грязный» @ fyr.
Однако делать это без необходимости в Java - это плохая идея. Это неэффективно, код более сложный, и поскольку вы полагаетесь на проверку времени выполнения, он более хрупкий.
И это не «переменные с динамическими именами». Он лучше описывает динамический доступ к переменным со статическими именами.
* - Это утверждение немного неточно. Если вы используете BCEL или ASM, вы можете «объявить» переменные в файле байт-кода. Но не делай этого! Таким образом, безумие!
Что вам нужно, так называется array. Я хотел написать следующий код:
int[] n = new int[4];
for(int i=1;i<4;i++)
{
n[i] = 5;
}
У вас нет. Самое близкое, что вы можете сделать, это работать с Картами, чтобы имитировать его, или определять свои собственные объекты, с которыми нужно иметь дело.
Попробуйте следующим образом:
HashMap<String, Integer> hashMap = new HashMap();
for (int i=1; i<=3; i++) {
hashMap.put("n" + i, 5);
}
Map<String, T>
, не начинайте возиться с вашим фактическим кодом. – Jeroen Vannevel 15 December 2013 в 04:37