我定义了一个简单的函数来返回iterable中的第一个项,或者错误:
def first(iterable):
iterator = iter(iterable)
try:
return next(iterator)
except StopIteration:
raise ValueError("iterable is empty")
在shell中,此功能可以满足您的期望:
>>> first({"1st", "2nd", "3rd"})
'1st'
>>> first({"1st", "2nd", "3rd"})
'1st'
>>> first(["1st", "2nd", "3rd"])
'1st'
但是,在Jupyter Notebook中,它返回set
中的第二个元素,但是list
中的第一个元素。
first({"1st", "2nd", "3rd"})
'2nd'
first(["1st", "2nd", "3rd"])
'1st'
first(set(["1st", "2nd", "3rd"]))
'2nd'
我在两种情况下都在Anaconda中使用Python 3.6.5。
我有什么明显的东西吗?