在元组中打印每两个元素。

4
我查看了几个问题 在列表中迭代每两个元素Python“每隔一个元素”习惯用法,它们都提供了一个我可能被迫使用的答案,但我感觉还有更好的方法;我想要对下面的代码进行操作,以便能够打印每两个或每四个元素。
 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,

我觉得我应该提一下输出结果应该是什么,而不是遍历元组并打印每个第二个或第四个元素,它应该遍历元组并打印每两个元素,然后再打印接下来的两个元素,直到遍历到元组末尾。

1个回答

10

打印出每隔一个元素:

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

以及其他每个元素,从第二个元素开始:

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

当然,要处理每四个元素,只需将2更改为4。这样做的原因是因为切片对象(在使用a[:]时隐式创建)需要三个参数 —— 起始位置、终止位置、步长。在这里,我们指定了步长。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接