【问题标题】:Modifying an array in python using nested loops使用嵌套循环修改python中的数组
【发布时间】:2021-08-14 12:49:48
【问题描述】:

我有一个数组 p=(1,2,4,5,7,10...),我想在数组偏离 f=(1,2,3,4) 的地方输入一个 0 ,5,6...)。我曾尝试使用嵌套的 for 循环,但我不知道如何使用 python 制作所需的输出 =(1,2,0,4,5,0,7,0,0,10...)。

到目前为止,这就是我真正得到的一切,但它在 p[1] 之前使用 f 的所有元素迭代 p[0],我不知道如何防止这种情况:

for x in f:
    for y in p:
        if x==y:
            print(x)
            break
        else:
            print('0')

谢谢!

【问题讨论】:

  • 请提供 exact 输入和 exact 预期输出。目前尚不清楚 oyu 想要完成什么。我东西你只想要[x if x == y else 0 for x, y in zip(p,f)]

标签: python arrays nested-loops


【解决方案1】:

我建议将p 设置为一组,以便快速检查成员资格:

>>> p = (1,2,4,5,7,10)
>>> p_set = set(p)
>>> tuple([i if i in p_set else 0 for i in range(11)])
(0, 1, 2, 0, 4, 5, 0, 7, 0, 0, 10)

【讨论】:

    【解决方案2】:

    代码:

    p =(1,2,4,5,7,10)
    f =tuple(range(1,11))
    for x in f:
        for y in p:
            if x == y:
                print(x)
                break
        else:
            print('0')
    

    结果:

    1
    2
    0
    4
    5
    0
    7
    0
    0
    10
    

    【讨论】:

      【解决方案3】:

      您不需要嵌套循环,只需遍历完整数字的数组并插入一个零即可。示例

      p = [1,2,3,4,5,6,7,8,9,10,11,12,13,14, 15]
      f = [1,2,4,5,6,7,10,14,15]
      
      for index,i in enumerate(p):
          if i == f[index]:
              pass
          else:
              f.insert(index, 0)
      

      结果

      [1, 2, 0, 4, 5, 6, 7, 0, 0, 10, 0, 0, 0, 14, 15]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-24
        • 2021-06-27
        • 1970-01-01
        • 2021-11-11
        相关资源
        最近更新 更多