[英]How to check if the value of a variable in a loop is equal to the previous value in Python?
[英]Check if next value is equal o current value in python loop?
我正在遍历文件,我想检查下一个即将到来的对象是否等于当前对象。 这两个对象的属性名称都类似Obj.name
这是一些简化的示例:
该文件包含:
Oba_A
Obj_B
Obj_C
Obj_D
我像这样遍历它们:
for obj in open("file.txt"):
check if Obj_A.name==Obj_B.name, if not:
if Obj_B.name==Obj_C.name
我是一名学习编程的生物学家。 希望我在这里得到足够的鼓励。
忽略了如何从文本文件获取对象的问题,您的基本答案可能类似于以下内容:
last_value = None
for obj in collection:
if obj.name == last_value:
# do something
else:
# do something different
last_value = obj.name
更新 :如果你想采取行动基于与下一个对象匹配的第一个对象,你可以存储到以前的对象,而不是仅仅的名字,前一个参考:
prev_obj = None
for obj in collection:
if obj.name == prev_obj.name:
# do something with prev_obj
else:
# do something different
prev_obj = obj
或者,如果确实有助于将它们视为“当前”和“下一个”:
cur_obj = None
for next_obj in collection:
if next_obj.name == cur_obj.name:
# do something with cur_obj
else:
# do something different
cur_obj = next_obj
但是请注意,我所做的只是更改了命名。 步骤仍然相同。
附加更新:循环中的第一次,prev_obj为None,因此它没有name属性。 将其更新为:
prev_obj = None
for obj in collection:
if prev_obj is not None and obj.name == prev_obj.name:
# do something with prev_obj
else:
# do something different
prev_obj = obj
跟踪我们看到的最后一个对象并与当前对象进行比较:
objects = ([....])
prev = objects[0]
for obj in objects[1:]:
if prev.name == obj.name:
# do whatever
else:
# do something else
prev = obj # update prev to current obj
如果对象是某种迭代器或确实是文件对象,请使用prev = next(objects)
启动,然后循环遍历其余对象。
附带说明一下,使用with
可以打开文件,因为它会自动关闭文件:
with open("file.txt") as f:
prev = next(f)
for obj in f:
# create objects
if prev.name == obj.name:
# do whatever
else:
# do something else
prev = obj
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.