python - 将每个字母与下一个字母进行比较
问题描述
我正在尝试将列表中的每个字母与下一个字母进行比较,如果减法小于 1,我希望打印要比较的数字。
lis=[2,3,5,6,7,8,0,4,2,5,6,8,9,4,2,]
for number in lis:
if lis[number+1]-lis[number]==1:
print (number)
输出是
2
3
0
4
2
9
4
2
代码完全跳过 5,6,7 但打印出的数字并不真正适合该语句。谁能解释一下?提前致谢
解决方案
您将list 的索引与values混淆了。
例如,列表的第一个元素的索引为 0,但值为 2。下一个元素的索引为 1,但值为 3。下一个的索引为 2,但值为 5。当您使用lis[index]
时,结果是一个值。
当您使用for number in lis
时,它会迭代值,而不是索引。
这是做我认为你要做的事情的一种方法:
lis=[2,3,5,6,7,8,0,4,2,5,6,8,9,4,2,]
for index, value in enumerate(lis[:-1]): #don't go all the way to the end because you're comparing with the next
if lis[index+1]-value <= 1: #you wanted less than, right?
print (value)
推荐阅读
- android - 如果您让 Google 管理密钥,您可以从 Google Play Console 下载/访问您的 Android 应用签名密钥吗?
- javascript - 试图制作一个按钮以仅显示具有值集或变量的项目
- python-3.x - 使用 Google Cloud Endpoints 时如何重启 Flask 服务器?
- google-apps-script - Google App Script 能否通过链接下载压缩的 csv 文件并解析该 CSV?
- sql - SQL中的MAX函数返回不是最大值
- tcl - 如何在 Synopsys DVE 下运行的 Tcl 脚本中打印(放入日志)信号值?
- html - 移动只有相等的css-float div之间的空白空间
- r - R中的模糊外连接/合并
- outlook - 桌面 Outlook 插件登录问题 - 13003“不支持用户身份类型”
- android - 我自己的库中依赖项的 api 或实现?