【问题标题】:How to iterate through discontiguous for loop in python如何在python中遍历不连续的for循环
【发布时间】:2020-01-24 16:28:23
【问题描述】:

我正在编写一个缩放脚本,我需要使用 for 循环遍历不连续的列表。

我的要求是我有两组vlan说:

  1. no_of_l2_vlans , start_l2_vlan -- 这是指一个集合,在每个元素内部我做一些操作。
  2. no_of_l3_vlans, start_l3_vlan -- 这是指另一组,我执行与上一次迭代相同的一组操作,

我已经实现了对每个集合线性使用两个 for 循环,但只是想知道是否有一种有效的方法来做到这一点?

 for i in range(l2_vlan_start,l2_vlan_start+no_of_l2_vlans):
     <some set of operations>

 for i in range(l3_vlan_start,l3_vlan_start+no_of_l3_vlans):
     <same set of operations>

由于操作相同,我可以将这两个 for 循环合并为一个吗?

请指教。

【问题讨论】:

  • 两个循环的范围是否相同?如果是,那么您可以在一个循环下完成
  • 没有。范围会有所不同,但 for 循环内的操作是相同的..
  • 范围可以重叠吗?
  • 那么有三个可能的范围吗?一个在中间它们重叠,而一个在每一端它们不重叠?在您的两个循环中,即使您正在执行 same 操作,它们是否对 不同 对象进行操作?

标签: python


【解决方案1】:

虽然我更喜欢 @0x5453 的回答即评论,但这里有一些更专门针对您的问题的内容,并展示了香肠是如何制作的:

def mychain(spans):
    for start, no in spans:
        for i in range( start, start+no ):
            yield i

for x in mychain(((l2_vlan_start,no_of_l2_vlans),(l3_vlan_start,no_of_l3_vlans))):
    print(x)

【讨论】:

  • 这很完美。我也可以在 for 循环中进行自定义,这实际上是我的要求。
猜你喜欢
  • 2020-10-06
  • 2017-04-15
  • 2019-11-11
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 2017-03-01
相关资源
最近更新 更多