Python循环(在确定位置插入列表项)

3 投票
4 回答
6736 浏览
提问于 2025-04-16 07:44

我有这段代码:

number = 2
size = 5
list_b = [("b","b","b")]
list_a = [("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a")]
for i in range(number):
   list_a.insert(size,list_b)
print list_a

运行后给我这个结果:

[('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('b', 'b', 'b'),
('b', 'b', 'b'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a')]

基本上,它在由 size 定义的位置插入了两次 list_b

我想要一个循环,让它重复插入 list_b,次数由 number 定义,但每次插入的位置要重复 size 次。这个说起来有点复杂,所以我这里给出我想要的结果:

[('a', 'a', 'a'),
('a', 'a', 'a'), 
('a', 'a', 'a'),
('a', 'a', 'a'), 
('a', 'a', 'a'), 
('b', 'b', 'b'), 
('b', 'b', 'b'), 
('a', 'a', 'a'), 
('a', 'a', 'a'), 
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('b', 'b', 'b'),
('b', 'b', 'b'),
('a', 'a', 'a'),
('a', 'a', 'a'), 
('a', 'a', 'a'), 
('a', 'a', 'a'),
('a', 'a', 'a'),
('b', 'b', 'b'),
('b', 'b', 'b'), 
('a', 'a', 'a'), 
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('b', 'b', 'b'),
('b', 'b', 'b'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('a', 'a', 'a'),
('b', 'b', 'b'),
('b', 'b', 'b'),...and so on]

编辑

如果我有这个:

 list_a = [a, ] * 15
 list_b = [b,]
 s = 5
 n = 2

我想得到这个结果:

 [b,b,a,a,a,a,a,b,b,b,b,a,a,a,a,a,b,b,b,b,a,a,a,a,a,b,b]

因为这是一个例子,而 list_asn 会变化,我该如何用一两个循环来实现这个呢?

谢谢,

Favolas

4 个回答

1

这段代码的意思是……

首先,它会做一些初始化的工作,比如设置一些基本的参数或者变量。接着,它会进入一个循环,这个循环会不断地执行,直到满足某个条件为止。在这个循环里,它可能会进行一些计算,或者处理一些数据。

最后,当循环结束后,代码会执行一些收尾的工作,比如输出结果或者清理资源。

总的来说,这段代码的结构很常见,主要是用来处理重复的任务,直到达到预期的结果。

#!/usr/bin/python

number = 2
size = 5
list_b = [("b","b","b")]
list_a = [("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a"),("a","a","a")]

if __name__ == '__main__':
    insertion_count = len(list_a) / size
    for j in xrange(insertion_count):
        # compute insertion position
        pos = (j+1)*size + j * number
        for i in range(number):
            list_a.insert(pos,list_b)
    print list_a
1

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常需要将它们转换成一种程序可以处理的格式。

比如说,如果你从一个表单获取了用户的名字和年龄,这些信息最开始可能是以文本的形式存在。为了让程序能够使用这些信息,我们可能需要把它们转换成特定的数据类型,比如字符串(文本)和整数(数字)。

这个过程就叫做“数据转换”。通过数据转换,我们可以确保程序能够正确地理解和使用这些数据,从而完成我们想要的功能。

from itertools import chain, izip, repeat

list_a = [('a', 'a', 'a')] * 15
list_b = [('b', 'b', 'b')]

a5b2s = [iter(list_a)] * 5 + [repeat(*list_b)] * 2
list_a[:] = chain.from_iterable(izip(*a5b2s))
5

为了方便讨论,我把 ('a', 'a', 'a') => a('b', 'b', 'b') => b 叫做这样。

number=2
size=5
list_a=["a"]*20
list_b=["b"]

workfor=len(list_a)+(len(list_a)/size)*number*len(list_b)
i=0
while i<workfor:
    i+=size
    for times in range(number):
        for elem in list_b:
            list_a.insert(i,elem)
        i+=len(list_b)

print list_a

结果是 =>

 ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'a', 'a', 'a', 'a', 'a', 'b', 'b']

撰写回答