Py学习  »  Python

python嵌套for循环当外部循环的索引等于内部循环的长度时,可以重新开始

Aliko Aliko • 3 年前 • 1185 次点击  

我有

A = ['A','B','C','D','E','F','G','H']
B= ['a','b']

想要反复浏览列表以获得

C = ['Aa','Bb','Ca','Db','Ea','Fb','Ga','Hb']

我怎样才能用python来进行呢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133583
 
1185 次点击  
文章 [ 5 ]  |  最新文章 3 年前
Dharman Neenhila
Reply   •   1 楼
Dharman Neenhila    3 年前
A = [1, 2, 3, 4, 5, 6, 7, 8]
B = ["a", "b", "c", "d", "f", "g", "h", "q"]
C = []
i = 0
while i < len(A):
    for j in B:
        C.append("{}{}".format(A[i], j))   
    i = i + 1
        

print(C)

你可以不使用任何模块来尝试。

你可以指定你的数组,不管怎样都可以。我就是这样测试的。

Kelly Bundy
Reply   •   2 楼
Kelly Bundy    3 年前

更多变化:

from itertools import cycle
from operator import add

A = ['A','B','C','D','E','F','G','H']
B = ['a','b']
E = ['Aa','Bb','Ca','Db','Ea','Fb','Ga','Hb']

C = list(map(add, A, cycle(B)))
print(C == E)

C = [a + B[i%2] for i, a in enumerate(A)]
print(C == E)

C = list(map(''.join, zip(A, cycle(B))))
print(C == E)

C = list(map('{}{}'.format, A, cycle(B)))
print(C == E)
Xiidref
Reply   •   3 楼
Xiidref    3 年前

可以通过使用A列表中的索引(映射到B列表中的元素数)和模运算来实现这一点( % ) :

A = [1,2,3,4,5,6,7,8]
B= ['a','b']
C = []

for i in range(len(A)):
    C.append(f"{A[i]}{B[i%2]}")
quamrana
Reply   •   4 楼
quamrana    3 年前

你可以用 zip() cycle() :

from itertools import cycle

A = ['A','B','C','D','E','F','G','H']
B = ['a', 'b']

C = [a + b for a,b in zip(A, cycle(B))]
print(C)

按要求输出。

Titouan L
Reply   •   5 楼
Titouan L    3 年前

您可以使用列表:

a = ['A','B','C','D','E','F','G','H']
b = ['a','b']

c = [a[i] + b[i%2] for i in range(len(a))]

# ['Aa', 'Bb', 'Ca', 'Db', 'Ea', 'Fb', 'Ga', 'Hb']