python - 数组列表中的输入没有完全反转,使用 FOR 循环时它只过滤两个
问题描述
tweet=['hi','hope','hippo','bow']
temp=[]
for i in tweet:
temp.append(tweet.pop())
print(temp)
我试图反转字符串,但使用 FOR 循环它只打印出 BOW 和 HIPPO ,如果我使用 WHILE 循环它是完美的。帮我解决这个问题?
解决方案
因为pop
ontweet
会影响您的循环迭代器。
你可以很容易地通过浅拷贝()来防止这种情况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)
推荐阅读
- javascript - 我如何在js中定义一个以=开头的函数?
- java - java并发中的外星人方法很难理解
- ios - 快速更改 ViewController 时如何消除延迟
- laravel - Windows Laravel 更新:作曲家无法打开流,权限被拒绝
- ruby-on-rails - 使用条件验证属性存在
- c# - Umbraco 会员 - 如何在注册表单中设置自定义强制属性?
- xamarin.forms - 如何在 xamarin 表单中使用自定义渲染器降低键盘高度?
- javascript - React - 如何在动画结束后使元素消失?
- woocommerce - 使用 WooCommerce Rest API 获取管理员电子邮件
- r - 如何将“5may2019”等数据转换为日期?