4

私はいくつかの質問を調べました。リスト内の2つの要素ごとに繰り返しPythonの「その他すべての要素」イディオムを使用すると、強制的に使用する可能性がありますが、より良いアプローチがあると感じています。以下のコードでやりたいのは、2つおきまたは4つおきの要素を印刷できるようにすることです

 Gun_rack =(
         'Gun 1:', 'Colt New Frontier 44 Special', 'Cal:.44     ', 'Weight: 2.8  lbs', 'Ammo Capacity  :6',
         'Gun 2:', 'Smith & Wesson SW1911DK'  ,    'Cal:.45 ACP ', 'Weight: 2.6  lbs', 'Ammo Capacity  :9',
         'Gun 3:', 'Heckler & Koch P2000SK V2',    'Cal.357     ', 'Weight: 1.50 lbs', 'Ammo Capacity :13',             
         'Gun 4:', 'Magnum Research Desert Eagle', 'Cal.50      ', 'Weight: 4.46 lbs', 'Ammo Capacity  :7',
         'Gun 5:', 'Heckler & Koch MP5K ',         'Cal 9mm     ', 'Weight: 4.78 lbs', 'Ammo Capacity :30',
         )

辞書を使用すると、Pythonチュートリアルで示した例のようにすべてのキーと値の引数を出力できることはわかっていますが、項目はランダムな順序であるため、タプルです。

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.iteritems():
...     print k, v
...
gallahad the pure
robin the brave

リストまたはタプルのいずれかで同様のコードを使用したいと思っていました。

for a ,b in Gun_rack:
   print a,b

また

for a,b,c,d, in Gun_rack:
  print a,b,c,d,

タプルをステップスルーして2番目の要素ごとまたは4番目の要素ごとに印刷するのではなく、タプルを通過して2つの要素ごとに印刷し、次の2つの要素を最後まで印刷するのではなく、出力がどうあるべきかについて言及する必要があったと思います。タプル。

4

1 に答える 1

10

他のすべての要素を印刷するには:

for elem in Gun_rack[::2]:
   print elem

2番目の要素から始まる他のすべての要素:

for elem in Gun_rack[1::2]:
   print elem

もちろん、4つおきの要素を実行するには、2を4に変更するだけです。これが機能する理由は、sliceオブジェクト(実行すると暗黙的に作成されるa[:])が3つの引数(start、stop、stride )を取るためです。ここでは、ストライドを指定しています。

于 2012-09-26T20:40:40.437 に答える