繁体   English   中英

Python迭代器和可迭代列表

[英]Python iterator and iterable with list

我正在通过观看 Pluralsight 课程来学习 Python,并开始尝试使用迭代器和可迭代示例。 我遇到的一个我无法解释的问题是以下迭代器和可迭代示例:

以下要么返回第一项,要么在为空时引发 ValueError:

def first(iterable):
    iterator = iter(iterable)
    try:
        return next(iterator)
    except StopIteration:
        raise ValueError("iterable is empty")

课程中的例子有效:

first({"1st","2nd","3rd"})

通过返回'1st'但是当我将列表的内容更改为:

first({"1","2","3"})

返回的值是“2”而不是“1”

为什么会出现这种情况?

顺便说一句,我也试过:

first({1,2,3})

并返回预期值: 1

您根本没有使用list {"1st","2nd","3rd"}是一个set文字,并且set s 是无序的(它们以某种顺序迭代,但不是一个有用的顺序,甚至在不同的 Python 运行或set s 构造中必须重复的顺序在一次 Python 运行中以不同的方式)。

如果您尝试制作list文字,请使用[] ,而不是{} first(["1st","2nd","3rd"]) , first(["1","2","3"])first([1,2,3])行为都可以预测(返回"1st""1"1分别),因为list有顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM