在DrScheme中,如何从2个列表中创建关联列表?
例如,我有,
y = ( 1 2 3 )
x = ( a b c )
我想要
z = ((a 1) (b 2) (c 3))
答案 0 :(得分:9)
假设方案(因为你的最后两个问题是关于方案):
(define x '(1 2 3))
(define y '(4 5 6))
(define (zip p q) (map list p q)) ;; <----
(display (zip x y))
;; ((1 4) (2 5) (3 6))
答案 1 :(得分:4)
在C#4.0中你可以这样做;
var numbers = Enumerable.Range(1, 10).ToList<int>();
var abcs = new List<string>() { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" };
var newList = abcs.Zip(numbers, (abc, number) => string.Format("({0} {1})", abc, number));
foreach (var i in newList)
{
Console.WriteLine(i);
}
希望这有帮助!
答案 2 :(得分:2)
在Python中,这很简单,只需zip(x,y)
。如果你想要一个关联词典:
z = dict(zip(x,y))
>>> x = ['a', 'b', 'c']
>>> y = [1,2,3]
>>> z = dict(zip(x,y))
>>> z
{'a': 1, 'c': 3, 'b': 2}
答案 3 :(得分:1)
PHP有array_combine()。
e.g。来自手册:
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);
答案 4 :(得分:1)
;;许多列表的通用拉链
> test
'((1 2 3) (4 5 6) (7 8 9))
> (zip test)
'((1 4 7) (2 5 8) (3 6 9))
答案 5 :(得分:0)
根据您使用的语言,maty存在执行此操作的“zip”函数,请参阅此stackoverflow问题:zip to interleave two lists
答案 6 :(得分:0)
和perl:
use List::MoreUtils qw/pairwise/;
use Data::Dumper;
my @a = (1,2,3,4);
my @b = (5,6,7,8);
my @c = pairwise { [$a, $b] } @a, @b;
print Dumper(\@c);
也是为了说明如何在q中完成。 (kdb+/q)
q)flip (enlist til 10),(enlist 10?10)
0 8
1 1
2 7
3 2
4 4
5 5
6 4
7 2
8 7
9 8