代码之家  ›  专栏  ›  技术社区  ›  mon

巨蟒里没有单子?

  •  -1
  • mon  · 技术社区  · 5 年前

    请帮助理解set(first).update(second)在Python中不起作用的原因。

    >>> names1 = ["Ava", "Emma", "Olivia"]
    >>> names2 = ["Olivia", "Sophia", "Emma"]
    >>> 
    >>> sn1=set(names1)
    >>> sn1.update(names2)
    >>> sn1
    {'Sophia', 'Emma', 'Ava', 'Olivia'}
    
    >>> sn1=set(names1).update(names2)
    >>> sn1
    (Nothing displayed)
    

    更新

    正如评论中所说,这与莫纳德无关问题是是否有办法在一行中获得对象的链式转换结果。

    1 回复  |  直到 5 年前
        1
  •  2
  •   chepner    5 年前

    在第二个例子中, sn1 设置为 update 方法(即 None ,而不是返回的集合 set(names1) .

    从Python3.8开始,您可以做一些类似于尝试使用赋值表达式的事情。

    >>> names1 = ["Ava", "Emma", "Olivia"]
    >>> names2 = ["Olivia", "Sophia", "Emma"]
    >>> (sn1 := set(names1)).update(names2)
    >>> sn1
    {'Sophia', 'Olivia', 'Emma', 'Ava'}