如何解决如果已添加上一个元素,则在列表中添加下一个元素
我想从列表中添加下一个元素(如果存在于另一个列表中),从某个元素等等。 我将进一步解释:我有这两个列表
numb_5 = [1,2,3,4,5]
numb = [3,1,6,7,8,5,2]
我想将出现在len(numb_5)
中的numb
的前numb_5
个元素追加到新列表中,如果一个元素没有出现在numb_5
中,请追加numb
的第一个元素在len(numb_5)
之后,依此类推,当然,与我遇到的问题不同的元素 (来自numb
,而不是6结果必须存储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语句中,因为 result 存储5而不是继续存储1,但是无论如何都无法解决。
我的错误代码获得了结果:result = [3,5]
请求的结果应为:result = [3,1]
我非常感谢能帮助我的人!
解决方法
绘制流程图或以其他方式计划您的代码确实有帮助,所以让我们来看看吧。
- 我们有
numb_5 = [...]
,numb = [...]
,并且我们知道len(numb) > len(numb_5)
- 让我们将“主要选择”和“次要选择”分成不同的数组以使生活更轻松
-
numb_pri = numb[0:len(numb_5)]
-
numb_sec = numb[len(numb_5):]
-
- 让我们也
numb_5 = set(numb_5)
来加快成员资格检查 - 现在我们最好摆脱
numb_sec
中没有的numb_5
中的数字,因为我们还是不希望它们。 - 制作一个空的
result = []
列表 - 当我们遍历
e
的每个元素numb_pri
时:-
e
中的numb_5
吗?- 是吗?将
e
添加到result
- 不?拉出
numb_sec
的第一个元素,并将 that 添加到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]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。