循环并添加2个列表

时间:2015-05-04 08:37:46

标签: python list python-2.7 for-loop

我在下一个代码段中有两个列表:

lst1 = ['a','b','c','d']
lst2 = [1,2,3,4]

我愿意在使用第一个列表时循环遍历第二个列表并获得以下内容:

'a','b','c','d'
'a','b',1,'c','d'
'a','b',1,2,'c','d'
'a','b',1,2,3,'c','d'
'a','b',1,2,3,4,'c','d'

我怎么能用for循环来做到这一点?

由于

3 个答案:

答案 0 :(得分:2)

很多有趣的切片语法,非常简单。可能应该验证一些边界条件(l1的奇数)。

def yield_from_l1_l2(l1, l2):
    HALF_OF_L1 = len(l1) / 2
    for i in xrange(len(l2)+1):
        yield l1[:HALF_OF_L1] + l2[:i] + l1[HALF_OF_L1:]

l1 = ['a', 'b', 'c', 'd']
l2 = [1, 2, 3, 4]

for l in yield_from_l1_l2(l1, l2):
    print l

输出:

['a', 'b', 'c', 'd']
['a', 'b', 1, 'c', 'd']
['a', 'b', 1, 2, 'c', 'd']
['a', 'b', 1, 2, 3, 'c', 'd']
['a', 'b', 1, 2, 3, 4, 'c', 'd']

答案 1 :(得分:1)

你所要求的并不是绝对清楚;你想要这样的东西:

for i in range(len(b)+1):
  tmp = []
  for j in range(len(a)):
    if j==2:
      tmp += b[:i]
    tmp.append( a[j] )
  print tmp

或更好:

for i in range(len(b)+1):
  print a[:2] + b[:i] + a[2:]

答案 2 :(得分:1)

该死的,被钟声殴打。 以下是一个快捷方式,它不会按照您希望的方式迭代列表(使其快一点)。使用这是可能的:

list1 = ['a','b','c','d']
list2 = [1,2,3,4]
list1 = list1[:2] + list2 + list1[2:]

如果您需要遍历列表,并且想要保留代码行和内存使用情况,请迭代第二个列表并将其添加到第一个列表中:

a = ['a','b','c','d']
b = [1,2,3,4]
for i in range(0, len(b)-1):
    a = a[:2+i] + [b[i]] + a[-2:]

结果将是:

['a', 'b', 1, 2, 3, 'c', 'd']