【发布时间】:2016-11-26 21:35:15
【问题描述】:
使用 3.x 版本 - 想知道解决以下问题的最简单和原生的方法:
示例列表:
listA = [1, 2, 3, 66, 0]
listB = [0, 0, 1, 2, 3, 66, 0, 99, 0, 3]
如何消除两个列表之间的差异,以使新的 listC 与 listA 的顺序完全相同?
所以使用上面的例子 listC 应该等于[1, 2, 3, 66, 0]
列表 A 可能大于列表 B,另一个条件是列表 A 永远不会有重复编号,而列表 B 可能有重复。
我要解决的慈善俱乐部练习是:
林黛的大脑测试:
请编写一个程序,如果 B 的元素按照它们在 B 中出现的顺序出现在 A 中,则打印“YES”,但不一定是连续的。否则程序应该打印“NO”。
林黛的奖金测试:
如果 B 的元素出现在 A 中,请编写一个程序打印 'YES' 按顺序出现在 B 中并连续出现。
显然,如果有人喜欢这个挑战,那么请发布完整的程序来解决这两个问题。
【问题讨论】:
-
Linday 的大脑测试只是询问 B 是否是 A 的 子序列,对吧?
-
你写:“列表 B 永远不会有重复的数字,不像列表 A whist [sec] 可能有重复。”:但是你给出的例子违反了这个条件:listB 在您的示例中有重复项。
-
我已经纠正了这个错误,但 Trincot 您的解决方案在第一部分有效,谢谢您的布局非常好而且简单。您能否重新发布奖金问题解决方案
-
我正在重写一些。完成后将重新发布;-) 但是:林赛大脑/奖励问题似乎表明 A 通常比 B 有更多的元素。如果 B 的元素多于 A,那么如果我读得很好,那么两者都不能返回“是”,因为B 的 每个 元素必须出现在 A 中,并保持相同的顺序。我误会了吗?
-
另一个问题。 Lindey 测试说 "..prints 'YES' if B 的元素出现在 A.."。这是否意味着 B 的 所有 元素?还是一个就够了?但是如果一个就足够了,那么要求它在 A 中以相同的顺序出现是没有意义的。如果一个足够了,算法可以停止检查其他任何内容,而只打印“YES”。还是应该进一步检查,如果 B 中有第二个元素出现在 A 中,但顺序错误,它仍然应该打印“NO”?我觉得描述令人困惑。
标签: python python-3.x