在python中存储循环的上一个值



我有一个简单的程序,我想在附加列表中添加元素,基于它们是否与主列表中的下一个元素匹配,即

'''
-- Append the first element in the append list as it has no previous element 
-- After that check if the second element is same as first element 
-- if same: Do nothing , if different : Append to the append list 
-- The append list will be populated with all the values which don't match their previous values
'''
main_list = ['Apple', 'Apple', 'Apple', 'Apple', 
'bat', 'bat', 'bat1', 'bat', 'cat', 'cat', 'cat', 
'cat1', 'cat', 'cat', 'Apple', 'Apple', 'Apple', 
'Apple']
append_list = ['']

previous_item = []
previous_item_2 = ['']
for item in main_list:
previous_item.append(item)
if previous_item[0] != previous_item_2[0]:
append_list.append(item)
previous_item_2 = []
previous_item_2.append(item)
else :
pass 
print(append_list)

对于当前代码,追加列表只是用"填充;";和"Apple">

查看

的输出
for prev_item, item in zip(main_list, main_list[1:]):
print(prev_item, item)

看看你能不能从这里算出来

为main_list中的每一项保持跟踪append_list中的最后一个元素

main_list = ['Apple', 'Apple', 'Apple', 'Apple', 
'bat', 'bat', 'bat1', 'bat', 'cat', 'cat', 'cat', 
'cat1', 'cat', 'cat', 'Apple', 'Apple', 'Apple', 
'Apple']
append_list= list()
for item in main_list:
l = len(append_list)
if l == 0 or append_list[l-1] != item:
append_list.append(item)

print(append_list)
# output
['Apple', 'bat', 'bat1', 'bat', 'cat', 'cat1', 'cat', 'Apple']
main_list = ['', 'Apple', 'Apple', 'Apple', 'Apple', 'bat', 'bat', 
'bat1', 'bat', 'cat', 'cat', 'cat', 'cat1', 'cat', 'cat']
append_list = []
for prev_item, item in zip(main_list, main_list[1:]):
if prev_item != item:
append_list.append(item)
print(prev_item, item)
print(append_list)
res = [None]
lst = ['Apple', 'Apple', 'Apple', 'Apple', 
'bat', 'bat', 'bat1', 'bat', 'cat', 'cat', 'cat', 
'cat1', 'cat', 'cat', 'Apple', 'Apple', 'Apple', 
'Apple']
for word in lst:
if res[-1] != word:
res.append(word)
print(res[1:])

['Apple', 'bat', 'bat1', 'bat', 'cat', 'cat1', 'cat', 'Apple']

我发现这个特别有效:

append_list = [item for i, item in enumerate(main_list) if main_list[i-1] != item or i == 0]

我对它是如何工作的理解是,它迭代main_list中的每个项目,并让你访问索引,因为它这样做,这意味着你可以检查main list中的项目,它是1个元素,在你当前迭代的元素之前,并添加"item"如果它不等于所述元素,或者如果索引为0(它是列表的第一个元素)

编辑:如果您想在循环中添加主列表,如

for item in ExampleList:
main_list.append(item)

我想你也可以把这个添加到相同的循环中

if item != append_list[-1]: #checks if the item is the same as the last entry to the append list
append_list.append(item) #adds it to the append list

对于你想要添加的内容,这是我能给出的最好的回答但如果这没有达到你想要的效果,只需给出一点澄清或一个例子,我可以尝试帮助你更多

最新更新