Python 如何更改集合的特定元素?

Python 如何更改集合的特定元素?,python,types,integer,set,comparison,Python,Types,Integer,Set,Comparison,在这段代码中,我试图将每次循环的集合的值与参数中传递的值(在本例中为a)进行比较。但有趣的是,当我使用for-each循环时,它显示每个元素都是一个整数。如何在没有控制台错误的情况下进行整数到整数的比较 def remove(s,a,b): c=set() c=s for element in c: element=int(element) if(element<a or element>b): c.di

在这段代码中,我试图将每次循环的集合的值与参数中传递的值(在本例中为a)进行比较。但有趣的是,当我使用for-each循环时,它显示每个元素都是一个整数。如何在没有控制台错误的情况下进行整数到整数的比较

def remove(s,a,b):
    c=set()
    c=s
    for element in c:
        element=int(element)
        if(element<a or element>b):
            c.discard(element)
    return c

def main():
    remove({3, 17, -1, 4, 9, 2, 14}, 1, 10)

main()
def移除(s、a、b):
c=集合()
c=s
对于c中的元素:
元素=int(元素)
如果(元素B):
c、 丢弃(元素)
返回c
def main():
删除({3,17,-1,4,9,2,14},1,10)
main()
输出:

    if(element<=a or element>=b):
TypeError: '>=' not supported between instances of 'int' and 'set'
if(元素=b):
TypeError:“>=”在“int”和“set”的实例之间不受支持

重新分配局部变量
b

def remove(s,a,b):
    b=set()  # now b is no longer the b you pass in, but an empty set
    b=s  # now it is the set s that you passed as an argument
    # ...    
    if(... element > b): # so the comparison must fail: int > set ??
使用集合理解的简短实现:

def remove(s, a, b):
    return {x for x in s if a <= x <= b}

>>> remove({3, 17, -1, 4, 9, 2, 14}, 1, 10)
{9, 2, 3, 4}
def移除(s、a、b):
如果a>remove({3,17,-1,4,9,2,14},1,10),则返回s中x的{x)
{9, 2, 3, 4}

重新分配局部变量
b

def remove(s,a,b):
    b=set()  # now b is no longer the b you pass in, but an empty set
    b=s  # now it is the set s that you passed as an argument
    # ...    
    if(... element > b): # so the comparison must fail: int > set ??
使用集合理解的简短实现:

def remove(s, a, b):
    return {x for x in s if a <= x <= b}

>>> remove({3, 17, -1, 4, 9, 2, 14}, 1, 10)
{9, 2, 3, 4}
def移除(s、a、b):
如果a>remove({3,17,-1,4,9,2,14},1,10),则返回s中x的{x)
{9, 2, 3, 4}

如果您想将int与int进行比较,则将b作为s的列表

def remove(s,a,b):
    b = list(s)
    for element in s:
        element=int(element)      
        if(element< a or element > b):
            b.remove(element)
    return b

def main():
    remove({3, 17, -1, 4, 9, 2, 14}, 1, 10)

main()
def移除(s、a、b):
b=列表
对于s中的元素:
元素=int(元素)
如果(元素b):
b、 移除(元素)
返回b
def main():
删除({3,17,-1,4,9,2,14},1,10)
main()

如果您想将int与int进行比较,则将b作为s的列表

def remove(s,a,b):
    b = list(s)
    for element in s:
        element=int(element)      
        if(element< a or element > b):
            b.remove(element)
    return b

def main():
    remove({3, 17, -1, 4, 9, 2, 14}, 1, 10)

main()
def移除(s、a、b):
b=列表
对于s中的元素:
元素=int(元素)
如果(元素b):
b、 移除(元素)
返回b
def main():
删除({3,17,-1,4,9,2,14},1,10)
main()

来吧,我们为什么不把代码缩短一点呢

试试这个:

def remove(s, a, b):
    return s.difference(filter(lambda x: not int(a) < int(x) < int(b), s))


def main():
    new_set = remove({3, 17, -1, 4, 9, 2, 14}, 1, 10)

    # {2, 3, 4, 9}
    print(new_set)


main()
def移除(s、a、b):
返回s.difference(过滤器(λx:notint(a)
来吧,我们为什么不把代码缩短一点呢

试试这个:

def remove(s, a, b):
    return s.difference(filter(lambda x: not int(a) < int(x) < int(b), s))


def main():
    new_set = remove({3, 17, -1, 4, 9, 2, 14}, 1, 10)

    # {2, 3, 4, 9}
    print(new_set)


main()
def移除(s、a、b):
返回s.difference(过滤器(λx:notint(a)
因此,您将参数b设置为一个集合?并将集合与集合进行比较?不,该片段来自您的代码;)您将
b设置为一个集合,然后将该集合与(整数)进行比较一个集合的元素。因此,您将参数b设置为一个集合?并将集合与集合进行比较?不,该片段来自您的代码;)您将
b
设置为一个集合,然后将该集合与(整数)进行比较集合的元素。您已分配b=s且s已设置。您无法将int与set进行比较您已分配b=s且s已设置。您无法将int与set进行比较