【问题标题】:Why does this return statement return a list instead of a set in?为什么这个 return 语句返回一个列表而不是一个集合?
【发布时间】:2017-12-13 00:55:58
【问题描述】:

已经有一段时间了。我目前已经学习了 Python,并且遇到了很多东西,但我不明白为什么,我是 Python 的新手,我正在通过一本书来学习它,但它可能有点过时了。但是,有时我喜欢书籍而不是视频。反正这是个问题

def search_vowels(word):
vowels = set('aeeeiouuu')
return sorted(vowels.intersection(set(word)))

使用这段代码,它基本上有两组,一组称为元音,另一组是传递给函数“search_vowels()”的任何内容

然而有趣的是,当我返回对象时,它会创建一个新的 LIST 而不是 SET。我使用交集函数从单词中查找元音中的公共字符串值,而不是返回一个集合,而是返回列表?谁能解释一下?

我知道我可以通过声明一个来将当前返回的列表设置为一个集合

common = sorted(vowels.intersection(set(word)))
return set(common)

但是为什么它最初不返回一个集合?有什么我不知道的吗?请原谅我的无知,并感谢您提供的任何专业知识。感谢您的宝贵时间。

【问题讨论】:

  • 我认为 sorted 返回一个列表。 :) 但是,“排序”只是对项目进行排序
  • 发帖前请查看docs
  • FWIW,集合“通常是无序的”(标准 Python 集合也是如此);而sorted 函数(在所有sequences 中也是通用的)返回一个有序list - 要获得一个有序集,通常必须选择一个specific implementation,并且这必须应用后排序,因为sorted 仍将返回一个 list (或以应用“有序集的逻辑”的方式使用)。
  • 哇,我应该检查一下文档,我应该养成这个习惯。非常感谢。

标签: python list set return


【解决方案1】:

sorted 总是返回一个列表。它接受任何类型的可迭代并返回排序值的列表。这是你在使用sorted时在python IDLE中得到的提示:

sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

【讨论】:

  • 哇,我应该检查一下文档,第一行,谢谢你给我看这个@sam-pyt 我现在明白了。
  • @sam-pyt 你了解电子如何流经半导体吗? ;)
猜你喜欢
  • 2012-12-02
  • 2022-12-09
  • 2012-10-04
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
  • 2017-09-19
  • 2015-03-14
  • 2023-01-24
相关资源
最近更新 更多