python set union_python – set.union()抱怨它在传入生成器时没有参数
這是來自Wes Mckinney的Python for Data Analysis的第204頁
genre_iter = (set(x.split('|')) for x in movies.genres)
genres = sorted(set.union(*genre_iter))
在IPython中使用%paste方法時,此代碼非常有效.在Python shell中運行時,代碼也可以正常運行.但是,當我直接在IPython中鍵入第二行時,沒有%paste方法
genres = sorted(set.union(*genre_iter))
我收到以下錯誤
TypeError: descriptor 'union' of 'set' object needs an argument
這似乎是一個bug,除非有一個我仍然沒有意識到的IPython功能.
解決方法:
你已經耗盡了發電機.在再次使用之前重新定義它:
genre_iter = (set(x.split('|')) for x in movies.genres)
genres = sorted(set.union(*genre_iter))
在python中,一旦循環遍歷迭代器的所有元素,就不能再次遍歷迭代器(它現在是空的).
因為genre_iter迭代器是空的,所以你沒有向set.union()傳遞任何參數,因此它會抱怨:
>>> set.union()
Traceback (most recent call last):
File "", line 1, in
TypeError: descriptor 'union' of 'set' object needs an argument
只是為了明確:你沒有在ipython中找到錯誤.您可以在常規python提示中重現相同的問題.
標簽:python,ipython,generator
來源: https://codeday.me/bug/20190725/1535724.html
總結
以上是生活随笔為你收集整理的python set union_python – set.union()抱怨它在传入生成器时没有参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php增加mysql用户_PHP+MYS
- 下一篇: ant root环境配置_如何给root