如何修改 Range 函数中边界值的包含/排除行为?

Posted

技术标签:

【中文标题】如何修改 Range 函数中边界值的包含/排除行为?【英文标题】:How do modify the inclusion/exclusion behavior of Boundary values in the Range function? 【发布时间】:2020-05-27 11:47:16 【问题描述】:

第 1 部分: 我有一本字典:

mydict = 'K': 'VAL1': 'apple', 'VAL2': (60, 80),
          'L': 'VAL1': 'mango', 'VAL2': (90, 100),
          'M': 'VAL1': 'pears', 'VAL2': (120, 150)

rto = tuple(range(60,80))    # works
rto = tuple(range(mydict['K']['VAL2']))
TypeError: range() integer end argument expected, got list.

我该如何完成这项工作,我想遍历字典??

第 2 部分: 假设上面可以工作,我想检查一个值是否在范围内:

my_value = 70        
rto = tuple(range(60,80))
if my_value in rto :
    print("Value is in range")
else:
    print("Value not in range")

# Output:   
# 70- Value is in range  
# 20- Value not in range  
# 60- Value is in range  
# 80- Value not in range  
# (This tells me that the range function includes 60 and excludes 80 from the 
# test)

如何控制测试的边界条件?意思是: 包括 60 和 80。 排除 60 或 80。 包括任何一个。

【问题讨论】:

【参考方案1】:

我认为您不需要创建范围,因为您可以在值之间进行检查以获得解决方案。

下面的代码使用小于和大于运算符来查找元组之间是否存在 my_value。让我知道这是否是您的想法。

 for i in [j['VAL2'] for i,j in mydict.items()]:
    if i[0] <= my_value <= i[-1]:
        print(f'i,my_value value is in range')
    else:
        print(f'i,my_value value is not in range')

【讨论】:

是的,这很好用,而且代码更简洁。有什么办法可以操纵边界条件吗?例如,当前对于键 'K' , 80 显示不在 (60,80) 范围内。我想在 (60,80) 的范围内显示 60 和 80.. 将代码更改为包含小于或等于右边界的值。所以它应该同时获得 60 和 80。让我知道它是否有效【参考方案2】:

您可以为 dict 执行此操作。见here。

rto = tuple(range(*mydict['K']['VAL2']))

【讨论】:

以上是关于如何修改 Range 函数中边界值的包含/排除行为?的主要内容,如果未能解决你的问题,请参考以下文章

for循环使用range遍历数组尝试修改元素值的问题

如何使std :: vector的operator []编译在DEBUG中进行边界检查,但不在RELEASE中进行

如何排除具有零值的元素-XSLT?

Excel excel函数参数中的range和reference有啥区别

如何在带有边界的python优化中找到全局最小值?

Pandas crosstab() 函数与包含 NaN 值的数据框的混淆行为