Python - 列表连接
Python - List concatenate
我有两个列表,我想创建一个包含其数据的列表。
ls1 = ["1","2","3","4"]
ls2 = ["4","3","2","1"]
我正在寻找的答案是这种形式....
ls3 = ["1-4","2-3","3-2","4-1"]
有没有可能实现这个?注意数字之间的减号。
>>> ls3 = ['-'.join(x) for x in zip(ls1, ls2)]
['1-4', '2-3', '3-2', '4-1']
所以@aestthete 的回答是正确的。我只是想补充说明。
>>> ls3 = ['-'.join(x) for x in zip(ls1, ls2)]
['1-4', '2-3', '3-2', '4-1']
[someaction(x) for x in somelist]
将 return 一个列表,其中每个元素都是 someaction()
对 somelist
中相应的 x
执行的。这称为列表理解。
在这种情况下,somelist
是 zip(ls1,ls2)
,这会创建 [(ls1[0], ls2[0]), (ls1[1], ls2[1]), ...]
所以zip(ls1,ls2)
returns[('1', '4'), ('2', '3'), ('3', '2'), ('4', '1')]
someaction()
是 '-'.join()
它的作用是获取一个可迭代的字符串序列,并将它们与中间的字符串 '-'
连接在一起。所以你可以完成 ' to '.join(x)
得到 ['1 to 4', '2 to 3', ...]
>>> [ "{}-{}".format(ls1[x],ls2[x]) for x in range(len(ls1))]
['1-4', '2-3', '3-2', '4-1']
使用地图:
>>> map("{}-{}".format,ls1,ls2)
['1-4', '2-3', '3-2', '4-1']
使用 itertools.strmap:
>>> list(itertools.starmap("{}-{}".format,zip(ls1,ls2)))
['1-4', '2-3', '3-2', '4-1']
我有两个列表,我想创建一个包含其数据的列表。
ls1 = ["1","2","3","4"]
ls2 = ["4","3","2","1"]
我正在寻找的答案是这种形式....
ls3 = ["1-4","2-3","3-2","4-1"]
有没有可能实现这个?注意数字之间的减号。
>>> ls3 = ['-'.join(x) for x in zip(ls1, ls2)]
['1-4', '2-3', '3-2', '4-1']
所以@aestthete 的回答是正确的。我只是想补充说明。
>>> ls3 = ['-'.join(x) for x in zip(ls1, ls2)]
['1-4', '2-3', '3-2', '4-1']
[someaction(x) for x in somelist]
将 return 一个列表,其中每个元素都是 someaction()
对 somelist
中相应的 x
执行的。这称为列表理解。
在这种情况下,somelist
是 zip(ls1,ls2)
,这会创建 [(ls1[0], ls2[0]), (ls1[1], ls2[1]), ...]
所以zip(ls1,ls2)
returns[('1', '4'), ('2', '3'), ('3', '2'), ('4', '1')]
someaction()
是 '-'.join()
它的作用是获取一个可迭代的字符串序列,并将它们与中间的字符串 '-'
连接在一起。所以你可以完成 ' to '.join(x)
得到 ['1 to 4', '2 to 3', ...]
>>> [ "{}-{}".format(ls1[x],ls2[x]) for x in range(len(ls1))]
['1-4', '2-3', '3-2', '4-1']
使用地图:
>>> map("{}-{}".format,ls1,ls2)
['1-4', '2-3', '3-2', '4-1']
使用 itertools.strmap:
>>> list(itertools.starmap("{}-{}".format,zip(ls1,ls2)))
['1-4', '2-3', '3-2', '4-1']