我看到的几乎所有问题都是:这个问题更多的是关于连接或者在列表中的元素之间添加空格等。
假设我有:
pattern = '(?<![\w])attachment'
我希望将b中的元素添加到a中的每个元素之后,以便最终得到a = [1, 3, 5, 7, 9]
b = [2, 4, 6, 8, 10]
。我该怎么做呢?
答案 0 :(得分:3)
System.setProperty("javax.net.ssl.trustStore", "C:/Path/To/My/Cacerts/cacerts");
这需要c = []
for i in range(len(a)):
c.append(a[i])
c.append(b[i])
与a
的长度相同。如果它们不同,你将不得不稍微增加它,但它将是相同的想法。
如果您的目标只是希望获得b
和a
的排序列表......
b
答案 1 :(得分:2)
itertools
中有一个roundrobin
食谱,但这对您的示例来说有点矫枉过正,但确实可以使用不等长。
对于等长的子列表,您需要做的只是zip()
并展平:
>>> [n for p in zip(a, b) for n in p]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
或使用itertools.chain.from_iterable
:
>>> import itertools as it
>>> list(it.chain.from_iterable(zip(a, b)))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
或者,您可以编写自己的生成器:
def gen(a, b):
for x, y in zip(a, b):
yield x
yield y
>>> list(gen(a, b))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
答案 2 :(得分:2)
循环使用insert()作品并且相对简单:
for i in range(len(a)):
a.insert(2*(i)+1, b[i])
注意list.insert()需要将每个后续列表条目移回内存中的一个位置,这对于大型列表来说是非常低效的,来自collections.deque的deque(想想双链表)可能是更好的选择。
如果您要分配新列表:
c = []
for i in range(len(a)):
c.append(a[i])
c.append(b[i])
另请注意,此特定实现仅适用于长度相等的列表。
答案 3 :(得分:1)
这可能会有所帮助......
def alternateListInsert(a,b):
fIndex = 1
for i in range(len(b)):
a.insert(fIndex,b[i]);
fIndex += 2
return a