Python 如果已添加上一个元素,则在列表中添加下一个元素
我想从一个列表中附加下一个元素,如果在另一个列表中,从某个元素开始,依此类推。 我将进一步解释:我有这两个列表Python 如果已添加上一个元素,则在列表中添加下一个元素,python,list,if-statement,append,iteration,Python,List,If Statement,Append,Iteration,我想从一个列表中附加下一个元素,如果在另一个列表中,从某个元素开始,依此类推。 我将进一步解释:我有这两个列表 numb_5 = [1, 2, 3, 4, 5] numb = [3, 1, 6, 4, 7, 8, 5, 1, 2] 我想将出现在numb_5中的len(numb_5)元素的第一个len(numb_5)追加到一个新列表中,如果元素没有出现在numb_5中,则将numb的第一个元素追加到len(numb_5)之后,依此类推,当然,与我的问题不同的元素(从numb,结果必须存储5,而不
numb_5 = [1, 2, 3, 4, 5]
numb = [3, 1, 6, 4, 7, 8, 5, 1, 2]
我想将出现在numb_5
中的len(numb_5)
元素的第一个len(numb_5)
追加到一个新列表中,如果元素没有出现在numb_5
中,则将numb
的第一个元素追加到len(numb_5)
之后,依此类推,当然,与我的问题不同的元素(从numb
,结果必须存储5,而不是7,它应该存储1)。我希望用我的错误的代码,解释会更清楚:
result = []
for n in numb[:len(numb_5)]:
if n in numb_5:
result.append(n)
else:
count = 1
if numb[len(numb_5)+count] in numb_5:
result.append(numb[len(numb_5)+count])
else:
count += 1
我想问题出在最后一个else语句中,因为结果存储5而不是继续存储1,但无论如何都不能解决它。
从错误代码中获取结果:result=[3,1,5,4,5]
请求的结果应该是:result=[3,1,5,4,1]
我非常感谢任何能帮助我的人 绘制流程图或以其他方式规划代码确实很有帮助,所以让我们试一试
numb_5=[…]
,numb=[…]
我们知道len(numb)>len(numb_5)
numb\u pri=numb[0:len(numb\u 5)]
numb_sec=numb[len(numb_5):]
numb_5=set(numb_5)
以更快地进行成员资格检查numb_sec
中不在numb_5
中的数字,因为我们无论如何都不想要它们result=[]
列表numb\u pri
的每个元素e
时:
e
在numb_5
中吗?
- 是吗?将
添加到e
result
- 没有?拉动
的第一个元素,并将其添加到numb_sec
result
- 在
中没有更多要拉的元素?想办法处理这个案子!!!也许我们可以退一步,将numb_sec
添加到e
result
- 在
e
numb_pri = numb[0:len(numb_5)]
numb_sec = numb[len(numb_5):]
numb_5 = set(numb_5)
# Getting rid of useless elements of numb_sec
numb_sec = [x for x in numb_sec if x in numb_5]
result = []
for e in numb_pri:
if e in numb_5: # e is in numb_5
result.append(e) # Push e into result
else:
if numb_sec: # numb_sec isn't empty
x = numb_sec.pop(0) # Remove the first element of numb_sec into x
result.append(x) # Push x into result
else: # numb_sec is empty
result.append(e) # Fallback: Push e into result
print(result)
这为我们提供了输出:
[3, 1, 5, 4, 1]
我认为您的代码几乎是正确的,请将
count=1
移到代码段的最顶端。不幸的是,仍然没有给出正确的结果:(非常感谢!是否可以不删除元素就执行此操作?我需要它来处理数据列,因为删除数据列的元素会弄乱索引。我们在步骤2中制作了一个副本,因此原始列表将保持不变。)