我在下一个代码段中有两个列表:
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循环来做到这一点?
由于
答案 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']