Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
685 views
in Technique[技术] by (71.8m points)

python add value to a list when iterate the list

values = [2,3,4]
for v in values:
    values.append([v,255,255])

Why do the statements above never end? I make a mistake in my code. However, I find it will never stop when I execute the code above.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You iterate over an array which you grow as you iterate over it.

First values is [2,3,4] then after the first iteration, values is [2, 3, 4, [2, 255, 255]] then [2, 3, 4, [2, 255, 255], [3, 255, 255]] etc. You should print along the iteration to understand it better.

The reason is append actually changes the very object you are iterating over. You could try

values = [2,3,4]
new_values = []
for v in values:
    new_values.append([v,255,255])

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...