大大大大力无限 发表于 2023-4-17 22:24:47

python 序列

x=
iter(x)
<list_iterator object at 0x00000229D40FB820>
type(iter(x))
<class 'list_iterator'>
type(x)
<class 'list'>
next(iter(x))
1
next(iter(x))
1
next(iter(x))
1
next(iter(x))
1
请教大神,为啥我这全是1啊

sfqxx 发表于 2023-4-17 22:25:33

本帖最后由 sfqxx 于 2023-4-17 22:26 编辑

在使用 `next()` 函数时,如果已经迭代到了序列的末尾,再次调用 `next()` 函数会抛出 `StopIteration` 异常。而在你的示例中,由于没有对 `iter()` 得到的迭代器对象进行多次循环遍历或使用,所以一直返回相同的元素。

如果你想要遍历迭代器对象中所有元素,可以使用循环来完成:


x =
it = iter(x)
for i in it:
    print(i) # 打印出所有元素:1 2 3 4 5


另外,推荐在循环中使用迭代器对象,在循环内部不需要单独调用 `next()` 来获得元素,循环会自动地调用 `next()` 并获取下一个元素。
有用请设置最佳答案

isdkz 发表于 2023-4-17 22:26:54

您好!这里出现的问题是您在每次调用next(iter(x))时都创建了一个新的list_iterator对象,这导致每次迭代都从列表x的第一个元素开始。为了避免这个问题,请将迭代器对象分配给一个变量,然后在调用next()时使用该变量。以下是正确的示例:

x =
iterator_x = iter(x)

print(next(iterator_x))# 输出 1
print(next(iterator_x))# 输出 2
print(next(iterator_x))# 输出 3
print(next(iterator_x))# 输出 4


请注意,在迭代列表时,建议使用for循环,因为它可以更简洁地完成相同的任务:

x =

for item in x:
    print(item)


这将按顺序打印列表中的每个元素。

蓝海悦不悦 发表于 2023-4-17 22:45:29

本帖最后由 蓝海悦不悦 于 2023-4-17 22:49 编辑

x =
it = iter(x)
for i in it:
    print(i)
输出:
1
2
3
4
5
或者
x =
it= iter(x)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))

输出:
1
2
3
4
5

yinda_peng 发表于 2023-4-17 23:32:35

动作好快啊几个大哥{:10_248:}

歌者文明清理员 发表于 2023-4-18 09:28:05

yinda_peng 发表于 2023-4-17 23:32
动作好快啊几个大哥

他们是先占楼,然后问ChatGPT,然后复制,编辑帖子

大大大大力无限 发表于 2023-4-18 10:43:59

歌者文明清理员 发表于 2023-4-18 09:28
他们是先占楼,然后问ChatGPT,然后复制,编辑帖子

哇塞还可以这样

isdkz 发表于 2023-4-18 10:48:55

歌者文明清理员 发表于 2023-4-18 09:28
他们是先占楼,然后问ChatGPT,然后复制,编辑帖子

说真的,我基本没有占楼,我每次占楼都是被 sfqxx 逼的{:10_266:}

歌者文明清理员 发表于 2023-4-18 11:28:24

isdkz 发表于 2023-4-18 10:48
说真的,我基本没有占楼,我每次占楼都是被 sfqxx 逼的

我也是{:10_266:}
(括号里的内容私聊)

sfqxx 发表于 2023-4-22 09:50:19

isdkz 发表于 2023-4-18 10:48
说真的,我基本没有占楼,我每次占楼都是被 sfqxx 逼的

{:10_256:}

sfqxx 发表于 2023-4-22 09:50:50

歌者文明清理员 发表于 2023-4-18 11:28
我也是
(括号里的内容私聊)

{:10_256:}
页: [1]
查看完整版本: python 序列