首页 > 解决方案 > 数组列表中的输入没有完全反转,使用 FOR 循环时它只过滤两个

问题描述

tweet=['hi','hope','hippo','bow']
temp=[]
for i in tweet:
    temp.append(tweet.pop())           
print(temp) 

我试图反转字符串,但使用 FOR 循环它只打印出 BOW 和 HIPPO ,如果我使用 WHILE 循环它是完美的。帮我解决这个问题?

标签: pythonarrayspython-3.xlistfor-loop

解决方案


因为popontweet会影响您的循环迭代器。
你可以很容易地通过浅拷贝()来防止这种情况tweet[:]

tweet = ['hi', 'hope', 'hippo', 'bow']
temp = []
for i in tweet[:]:
    temp.append(tweet.pop())
print(temp)

输出:

['bow', 'hippo', 'hope', 'hi']

顺便说一句,您可以通过内置函数反转列表reversed

tweet = ['hi', 'hope', 'hippo', 'bow']
temp = list(reversed(tweet))
print(temp)

输出:

['bow', 'hippo', 'hope', 'hi']

或者,您可以使用切片(@Ch3steR 回答):

tweet = ['hi', 'hope', 'hippo', 'bow']
temp = tweet[::-1]
print(temp)

推荐阅读