python - Python嵌套for循环结果的问题
问题描述
我将非常感谢以下 python 代码的帮助,这已经困扰我一个多星期了:谁能解释原因:
a) 代码不会从名为 startt1 的列表中删除元素 #2 并将其附加到 newlist1。然而,它正在删除和附加元素#1 和#4。跳过/忽略元素 #2 的合理原因是什么。
b) 如果代码运行一次,则列表 start1 = [2, 3, 5]。现在,如果使用这个修改后的 start1 列表再次运行代码,元素 #2 现在将被删除,留下 start1 = [3, 5],这是上面 a) 中应该做的。
请注意,保持列表中变量的顺序很重要。另外,我不想使用 sets() 因为在代码重复的实现中很重要。
start1 = [1,2,3,4,5]
finish1 = [6,4,7,2,1,'w']
newlist1 = []
x=0
y=0
for starts in start1:
x+=1
for finishs in finish1:
y+=1
if starts == finishs:
print (starts, finishs, sep=' = ')
newlist1.append(starts)
start1.remove(starts)
print(start1)
print(newlist1)
我想我已经知道的解决方案:i)一个简单的列表理解将解决问题(ii)一个使用 NOT 或 NOT IN 的简单 for 循环也可以工作。
但是,这些解决方案不是我正在寻找的,因为代码正在检查变量(员工)名称列表中一年的期末余额是否等于下一年的期初余额。我希望这很清楚,并且非常感谢您的帮助。
解决方案
您的问题似乎是您正在从列表中删除当前正在重复的值。这是我的代码的固定版本。
start1 = [1,2,3,4,5]
start1Copy=start1.copy()
finish1 = [6,4,7,2,1,'w']
newlist1 = []
x=0
y=0
for starts in start1Copy:
x+=1
for finishs in finish1:
y+=1
if starts == finishs:
print (starts, finishs, sep=' = ')
newlist1.append(starts)
start1.remove(starts)
print(start1)
print(newlist1)
推荐阅读
- typescript - 如何根据输入参数中的键推断数据?
- d3.js - 我需要哪些概念和技术来实现这种图
- php - Laravel 使用 slug 进行独特验证
- python - 如何将列表与数据框列标题进行比较并替换标题的名称?
- sqlite - 从 Excel 文件到 SQLite 数据库的 SQLite 插入循环
- vb.net - 在应用程序配置文件中找不到名为“ATX_PLSNGEntities”的连接字符串,尽管它包含在内
- android - DeepLinks和处理404的正确方法
- c# - 动态更新多行 SQL 存储过程
- angular - Angular Elements 8 在使用 @Input() 时不适用于 EDGE/IE11
- android - 将我的后台服务转换为兼容 Android Oreo 8.0