我试图编写一个代码来说明如果条件符合列表中的值,则在下一次迭代中使该值成为不同的值。问题是我不知道代码是什么告诉python在下一次迭代中做到这一点 我的代码。
list_ = [4, 5, 6, 6, 4, 5]
for i in range(0, 10):
for j in range(0, len(list_)):
if list_[j] == 5:
if list_[(j-1) % len(list)] == 4:
list_[j][i+1] = 3
但这不起作用,因为我得到一个int'对象不支持项目分配错误。我也知道一些缩进可能是错的,因为我努力将它们放到这里
答案 0 :(得分:0)
也许这就足够了,根据你的逻辑构建一个新的列表:
list_ = [4, 5, 6, 6, 4, 5]
lst = []
for i, x in enumerate(list_):
if (x == 5) and (list_[i-1] == 4) and (i-1 > 0):
lst.append(3)
else:
lst.append(x)
lst
# [4, 3, 6, 6, 4, 3]
作为列表理解:
[3 if (x == 5) and (list_[i-1] == 4) and (i-1 > 0) else x for i, x in enumerate(list_)]
# [4, 3, 6, 6, 4, 3]
如果(i-1 > 0)
位于第一个位置,5
会阻止搜索结尾。
此实现的三个主要pythonic主题:
enumerate
可迭代以减少索引的使用答案 1 :(得分:0)
您的确切预期结果不是那么清楚,但无论如何我建议您这个解决方案似乎可以解决您的问题:
list_ = [4, 5, 6, 5, 4, 5]
for j in range(0, len(list_)):
if (list_[j] == 5) and (list_[j-1] == 4):
list_[j] = 3
print(list_)
注意:在第一次迭代中,list_[j-1]
引用列表的最后一个元素。