web-dev-qa-db-ja.com

list.lengthまでのforループの作成

私は今forループについて読んでいますが、Javaのようにfor =ループをPython.

次のようなことをすることさえ可能ですか?

for (int i = 1; i < list.length; i++)

このforループ内で別のforループを実行できますか?

ありがとう

23
Agape

Pythonでは、list自体を反復処理できます。

_for item in my_list:
   #do something with item
_

または、インデックスを使用するには xrange() を使用できます。

_for i in xrange(1,len(my_list)):    #as indexes start at zero so you 
                                    #may have to use xrange(len(my_list))
    #do something here my_list[i]
_

enumerate() という別の組み込み関数があり、アイテムとインデックスの両方を返します。

_for index,item in enumerate(my_list):
    # do something here
_

例:

_In [117]: my_lis=list('foobar')

In [118]: my_lis
Out[118]: ['f', 'o', 'o', 'b', 'a', 'r']

In [119]: for item in my_lis:
    print item
   .....:     
f
o
o
b
a
r

In [120]: for i in xrange(len(my_lis)):
    print my_lis[i]
   .....:     
f
o
o
b
a
r

In [122]: for index,item in enumerate(my_lis):
    print index,'-->',item
   .....:     
0 --> f
1 --> o
2 --> o
3 --> b
4 --> a
5 --> r
_
44

はい、できます range[ドキュメント]

for i in range(1, len(l)):
    # i is an integer, you can access the list element with l[i]

とにかくリスト要素にアクセスしている場合は、それらを直接反復する方が自然です。

for element in l:
   # element refers to the element in the list, i.e. it is the same as l[i]

最初の要素をスキップしたい場合、 リストをスライス[チュートリアル]

for element in l[1:]:
    # ...

このforループ内で別のforループを実行できますか

もちろんできます。

6
Felix Kling

答えは、ループの必要性によって異なります。

もちろん、Javaに似たループを作成できます。

for i in xrange(len(my_list)):

しかし、実際にこのようなループを使用したことはありません。

通常は繰り返したいので

for obj in my_list

または、インデックスも必要な場合

for index, obj in enumerate(my_list)

または、リストから別のコレクションを作成したい

map(some_func, my_list)

[somefunc[x] for x in my_list]

また、ほとんどの反復関連のケースをカバーするitertoolsモジュールがあります

anymaxminallenumerateなどの組み込み関数もご覧ください。

私は言うだろう-PythonでJavaのようなコードを書こうとしないでください。 Pythonを使用する方法は常にあります。

2
RomanI

Pythonループについてはこちらをご覧ください: http://en.wikibooks.org/wiki/Python_Programming/Loops

Pythonにはループの開始と終了の{と}がありません。代わりに、行の最初に入力するタブ文字に依存します。行のインデントを意味します。

だから、ダブルタブ(インデント)でループ内のループを行うことができます

ダブルループの例は次のとおりです。

onetoten = range(1,11)
tentotwenty = range(10,21)
for count in onetoten:
    for count2 in tentotwenty
        print(count2)
1
Vahid Farahmand

私はグーグルと文字列Pythonでステートメントでソリューションを検索しようとしますが、それはそれと同じくらい簡単です。 first リンクはすべてを言っています。 (本当に素晴らしいフォーラムですが、その使用法は、MicrosoftがすべてのGUI製品の利点を理解しているように見える場合があります:内部のウィンドウ、外部のばか。)

0
Vidul