我有一个数字列表L。还有另一个数字列表M。我需要返回一个在L和M中找到的数字列表L。
编辑:从数学上讲,我正在寻找多集交点。
例子:
L=3,1
,4,1
,5,9
,2
,6
M=9
,7,1
,2
,1
,1
L'=9,1,2,1
我为此编写了以下代码:
my @some-numbers = 3, 1, 4, 1, 5, 9, 2, 6;
my @to-match = 9, 7, 1, 2, 1, 1;
my @matched;
my %histogram;
for @some-numbers -> $n { %histogram{$n}++ };
for @to-match -> $n {
next if not defined %histogram{$n};
if %histogram{$n} > 0 {
push @matched, $n;
%histogram{$n}--;
}
};
say @matched;
虽然它达到了目的,但我想知道是否有一种惯用的Perl6方法可以做到这一点?
一些背景:我一直在尝试一起学习Perl6和Python,并用这两种语言解决相同的难题。Python为上述问题提供了一个特别令人满意的解决方案。至少对我的初学者来说:)
你可以用袋子来做:
my $some-numbers = bag 3, 1, 4, 1, 5, 9, 2, 6;
my $to-match = bag 9, 7, 1, 2, 1, 1;
my $matched = $some-numbers ∩ $to-match;
say $matched;
输出:
bag(9, 1(2), 2)
您可以使用.kxxv
将行李重新设置为阵列。
my @match-list = $matched.kxxv;
say @match-list;
输出:
[9 1 1 2]
(如果您不在乎复制品,请使用集合而不是袋子。)
问题内容: 给出以下列表: 我想将[a]的每个元素重复其在[b]中的对应位置的编号,以产生此结果: 即0发生1次,5发生2次,1发生1次。 问题答案: 内容如下: -重复elem次 从两个列表中组成一个2元组的列表,将每个元素与另一个列表中的对应元素配对。这为您提供了用例中需要传递给的确切信息。 -将迭代器的结果列表展平为单个值列表。您既可以像我一样,也可以像马丁·彼得斯那样。
我想在java中创建一个方法,该方法接收两个字符串列表:
问题内容: 我有两个看起来像的清单: 我要做的是将list1的所有那些元素都保留在list2中。结果应该是: 问题答案: 使用运算符,您可以检查元素是否在序列中。 使用列表理解: 但是效率不高。您最好转换为对象。
问题内容: 我有两个带有不同对象的列表。 我想检查list2中的元素是否存在于list2中,基于特定的属性(Object1和Object2具有(以及其他),一个共有属性(类型为Long),名为attributeSame)。 现在,我这样做是这样的: 但是我认为有一种更好,更快的方法可以做到这一点:)有人可以提出吗? 谢谢! 问题答案: 如果只需要测试基本相等性,则可以使用基本JDK来完成,而无需在
我有两个不同对象的列表。 我想根据特定的属性(Object1和Object2有一个共同的属性(类型为Long),名为AttributeName),检查list2中是否存在list1中的元素。 现在,我是这样做的: 但我认为有更好更快的方法可以做到这一点:)有人能提出吗? 谢谢
问题:我希望编写一个脚本,同时循环两个列表,并将列表1中的日期替换为列表2中的日期。因此,很明显,您将使用清单2中的前70个日期替换清单1中的70个日期。之后,我希望将修改后的list1写入一个。txt文件。 我试过了,但我完全卡住了。我是Python的超级noob。