В некоторой степени Фортран был разработан, имея в виду компиляторную оптимизацию. Язык поддерживает целые операции над массивом, где компиляторы могут использовать параллелизм (особенно на многоядерных процессорах). Например,
Плотное умножение матриц просто:
matmul(a,b)
норма L2 вектора x:
sqrt(sum(x**2))
операторы Moreover такой как FORALL
, PURE
& ELEMENTAL
процедуры и т.д. дальнейшая справка для оптимизации кода. Даже указатели в Фортране не так гибки как C из-за этой простой причины.
предстоящий стандарт Фортрана (2008) имеет co-массивы, который позволяет Вам легко писать параллельный код. G95 (открытый исходный код) и компиляторы от CRAY уже поддерживают его.
Так да Фортран может быть быстрым просто, потому что компиляторы могут оптимизировать/параллелизировать его лучше, чем C/C++. Но снова как все остальное в жизни существуют хорошие компиляторы и плохие компиляторы.
feed.entry - это то, что допускает итерацию и содержит объекты определенного типа. Это примерно похоже на c ++:
for (feed::iterator party = feed.entry.begin(); party != feed.entry.end(); ++party) {
cout << (*party).location.address.text;
}
feed.entry - это свойство канала, и его значение (если это не так, этот код завершится ошибкой) объект, реализующий протокол итерации (например, массив) и имеющий iter метод, который возвращает объект-итератор
У итератора есть метод next (), возвращающий следующий элемент или вызывающий исключение, поэтому цикл for в Python на самом деле выглядит так:
iterator = feed.entry.__iter__()
while True:
try:
party = iterator.next()
except StopIteration:
# StopIteration exception is raised after last element
break
# loop code
print party.location.address.text
Чтобы добавить мои 0,05 доллара к предыдущим ответам, вы также можете взглянуть на встроенную функцию перечисления
for i, season in enumerate(['Spring', 'Summer', 'Fall', 'Winter']):
print i, season
0 Spring
1 Summer
2 Fall
3 Winter
party просто выполняет итерацию по итерация feed.entry
Взгляните на объяснения Dive into Python .
В Python для bucles не похожи на C / C ++, они больше всего похожи на PHP foreach . То, что вы делаете, не повторяется, как в , а с «(инициализация; условие; приращение)», а просто выполняет итерацию по каждому элементу в списке (строки ИТЕРИРУЕМЫ, как списки).
Например, :
for number in range(5):
print number
выведет
0
1
2
3
4
Цикл Python for
работает с итераторами
, который должен реализовывать протокол итератора
. Для получения дополнительной информации см .: