Согласно Спецификации языка Java :
BasicForStatement: for ( ForInitopt ; Expressionopt ; ForUpdateopt ) Statement ForStatementNoShortIf: for ( ForInitopt ; Expressionopt ; ForUpdateopt ) StatementNoShortIf ForInit: StatementExpressionList LocalVariableDeclaration ForUpdate: StatementExpressionList StatementExpressionList: StatementExpression StatementExpressionList , StatementExpression
14.14.1.2. Итерация для оператора
& nbsp; & nbsp; & nbsp; & nbsp; Затем выполняется шаг для итерации, как показано ниже:
& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; это оценивается. Если результат имеет тип Boolean, он подлежит распаковке без преобразования (§5.1.8).
blockquote>Другими словами,
t < Integer.parseInt(in.readLine())
выполняется один раз за каждую итерацию цикла.Это лучше объяснено в Java Tutorial :
Оператор for обеспечивает компактный способ итерации по диапазону значений. Программисты часто называют его «циклом for» из-за того, как он многократно повторяется, пока не будет выполнено определенное условие. Общая форма оператора for может быть выражена следующим образом:
for (initialization; termination; increment) { statement(s) }
При использовании этой версии оператора for имейте в виду, что:
blockquote>
- Выражение инициализации инициализирует петля; выполняется один раз, когда начинается цикл.
- Когда выражение завершения оценивается как ложное, цикл завершается.
- Выражение приращения вызывается после каждой итерации цикла ; для этого выражения вполне приемлемо увеличивать или уменьшать значение.
Если вы хотите что-то похожее на
for t in range(int(input())
, вы можете использовать Streams API:import static java.lang.Integer.parseInt; import static java.lang.System.console; // option 1 try (final BufferedReader console = new BufferedReader(new InputStreamReader(System.in))) { IntStream.range(0, parseInt(console.readLine())).forEach(i -> { System.out.println(i); }); } // option 2 (fails in some IDEs as console() will return null) IntStream.range(0, parseInt(console().readLine())).forEach(i -> { System.out.println(i); });
Вне регулярных выражений вот некоторые важные функции:
Для инструментов я рекомендую смотреть на следующее:
Свист, чистая поисковая система Python, которая даст Вам некоторые хорошие реальные примеры парсинга текста с помощью pyparsing и обработки текста в Python в целом.
Хорошие обзоры Ned Batcheldor различных инструментов парсинга Python.
Исходный код Docutils для более усовершенствованной обработки текста в Python, включая сложный конечный автомат.
Править: Польза ссылки, характерные для обработки текста в Python:
В Python существует книжная обработка текста. Я еще не считал его сам, но я прочитал другие статьи этого автора, и обычно они - хороший персонал.
Я нашел объект. __ документ __ и dir (obj) управляет невероятно полезный в изучении языка.
например.
a = "test,test,test"
Что я могу сделать с a? dir (a). Кажется, что я могу разделить a.
vec = a.split (",")
Что такое vec? vec. __ документ __:
"новый список инициализируется от объектов последовательности"
Что я могу сделать с vec? dir (vec).
vec.sort ()
и т.д...