- 主题:这个题为什么应该是这样输出?
letter=['A','B','C','D','D','D']
for i in letter:
if i=='D':
letter.remove(i)
print(letter)
为什么输出应该是['A','B','C','D'] 而不是['A','B','C'] ?
--
FROM 60.253.191.*
for 从前往后,加上remove一次只能移除一个 两次循环到头了
所以第三个D就保留下来了
【 在 useCASE 的大作中提到: 】
: letter=['A','B','C','D','D','D']
: for i in letter:
: if i=='D':
: ...................
--
修改:superlq FROM 183.220.1.*
FROM 183.220.1.*
遍历可迭代对象的过程中
可迭代对象本身还被改变了
这种情况用 for 循环看起来不靠谱
【 在 superlq 的大作中提到: 】
: for 从前往后,加上remove一次只能移除一个 两次循环到头了
: 所以第三个D就保留下来了
--
FROM 223.166.225.*
单步调试,看一下 letter 的变化就明白了
【 在 useCASE 的大作中提到: 】
: letter=['A','B','C','D','D','D']
: for i in letter:
: if i=='D':
: ...................
--
FROM 111.36.207.*
letter=['A','B','C','D','D','D' ]
for n, i in enumerate(letter):
print(letter[n:])
print("------------------------")
if i == 'D':
letter.remove(i)
print(letter[n:])
print(letter)
--
FROM 72.136.93.152
为什么是两次循环到头 到哪个头
【 在 superlq 的大作中提到: 】
: for 从前往后,加上remove一次只能移除一个 两次循环到头了
:
: 所以第三个D就保留下来了
: ...................
--
FROM 60.253.191.*
遇到这种问题不由得发自内心赞美Rust -_-;;;;
【 在 useCASE 的大作中提到: 】
: letter=['A','B','C','D','D','D']
: for i in letter:
: if i=='D':
: ...................
--
FROM 183.157.161.*
是如何被改变的
【 在 easior 的大作中提到: 】
: 遍历可迭代对象的过程中
: 可迭代对象本身还被改变了
: 这种情况用 for 循环看起来不靠谱
: ...................
--
FROM 60.253.191.*
忘了怎么单步调试了 我用的不是PyCharm而是SublimeText 如何单步调试?
【 在 pixYY 的大作中提到: 】
: 单步调试,看一下 letter 的变化就明白了
:
--
FROM 60.253.191.*
pdb
【 在 useCASE 的大作中提到: 】
: 忘了怎么单步调试了 我用的不是PyCharm而是SublimeText 如何单步调试?
--
FROM 1.202.141.*