【问题标题】:Set arithmetic for slices/ranges [duplicate]为切片/范围设置算术[重复]
【发布时间】:2020-01-16 11:10:49
【问题描述】:

Python 中有切片/范围的集合算术吗?

我希望能够执行类似的操作

for i in range(0,10)-range(3,5):
    print(i)

0,1,2,5,6,7,8,9

【问题讨论】:

  • 你可以使用numpy array来解决这个问题。 aa=np.arange(10); bb=np.concatenate((np.array(aa[aa<3]),np.array(aa[aa>4])))
  • bb=array([0,1,2,5,6,7,8,9]) 这将是输出。

标签: python


【解决方案1】:

您可以使用continue 跳过这些值:

for i in range(10):
    if i in range(3,5):
        continue
    print(i)

或者正如 @Chris_Rands 在 cmets 中建议的那样:

 for i in range(10):
    if i not in range(3,5):
        print(i)

【讨论】:

  • if i not in range(3,5): print(i) -- 在 python 3 上这非常有效,因为in 是为范围对象实现的方式
  • 我们可以使用numpy arraysa=np.arange(10); b=np.arange(3,5);a=np.delete(a,b)
  • 输出将是array([0, 1, 2, 5, 6, 7, 8, 9])
【解决方案2】:

好的,我找到了:

>>> sorted(set(range(0,10))-set(range(3,5)))
{0, 1, 2, 5, 6, 7, 8, 9}

【讨论】:

  • 但是set 是一个无序集合。你不会每次都收到{0,1,2,5,6,7,8,9}
  • @Ch3steR 你是对的。我已经更新了我的答案。
猜你喜欢
  • 2014-02-24
  • 2015-12-07
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 2018-02-20
  • 2011-01-17
  • 1970-01-01
相关资源
最近更新 更多