いくつかのオプションがあります...
リスト内包表記
十分に短い場合は、リスト内包表記を使用します。
new_list = [number * 10 for number in old_list]
map()
map()
関数が以前に存在する場合は、を使用することもできます (または、たとえば を使用しますlambda
)。
def my_func(value):
return value * 10
new_list = map(my_func, old_list)
Python 3.xmap()
ではリストを返さないことに注意してください (したがって、次のようにする必要があります: new_list = list(map(my_func, old_list))
)。
for ... in
単純なループを使用して他のリストを埋める
または、単純なループを使用することもできます - それはまだ有効で Pythonic です:
new_list = []
for item in old_list:
new_list.append(item * 10)
発電機
多くの処理がある場合 (あなたが言ったように)、要求されたときに遅延して実行したい場合、または結果が大きすぎる場合は、ジェネレーターを使用したい場合があります。ジェネレーターは次の要素を生成する方法を記憶し、以前に何が起こったかを忘れます (単純化しています)。そのため、それらを 1 回繰り返すことができます (ただし、すべての結果を格納するリストなどを明示的に作成することもできます)。
あなたの場合、これが印刷専用の場合、これを使用できます:
def process_list(old_list):
for item in old_list:
new_item = ... # lots of processing - item into new_item
yield new_item
そしてそれを印刷します:
for new_item in process_list(old_list):
print(new_item)
Python の wiki で見つけることができるジェネレーターの詳細: http://wiki.python.org/moin/Generators
「反復回数」へのアクセス
しかし、質問が反復回数を取得する方法に関するものである場合は、以下をご覧くださいenumerate()
。
for index, item in enumerate(old_list):
print('Item at index %r is %r' % (index, item))