我想在python in循环中列出一个列表



我想得到一个类似的输出

['a','aa','aaa','aaaa','aaaaa'],['b','bb','bbb','bbbb','bbbbb'],['c','cc','ccc','cccc','ccccc'] 

使用下面的代码片段

a = ["a","b","g","f"]
b =[1,2,3,4,5]
e = []
f = []
for i in a:
for j in b:
e.append(i*j)
f.append(e)
print(f)

有人能帮我吗?

在每个外循环之后,您都无法将e重置为新的空list,因此您正在向同一个list插入一组别名。只需在两个for之间移动e = [](并缩进以匹配(,例如:

for i in a:
e = []
for j in b:
...

因此,您可以在每个循环中创建一个新的list

或者,正如评论中所指出的,嵌套的listcomp可以做到这一点:

f = [[x * y for x in b] for y in a]

根本不需要命名的CCD_ 7(并且运行速度更快(。

您似乎忘记了在每次迭代时重置e列表。这将产生您想要的结果:

a = ["a","b","g","f"]
b =[1,2,3,4,5]
e = []
f = []
for i in a:
e= []
for j in b:
e.append(i*j)
f.append(e)
print(f)

唯一的错误是在a中的每次迭代后都没有将e重置为[]。让我解释一下:

这是您需要的代码:

for i in a:
for j in b:
e.append(i*j)
f.append(e)
e = []

你最后需要e = []。如果没有e = [],则在第一次迭代结束时,e=[‘a’,‘aa’…]。在第二次迭代中,e将等于[a,aa,aaa,aaaa,aaaaa,b,bb,bbb…]。但是,将其设置为空列表将停止此操作。

Python有一个属性,如果你将一个数字与一个字符串相乘,它将与该字符串相乘,例如:

print(2*"ab")

abab

你可以用它来回答:

a = ["a","b","g","f"]
b =[1,2,3,4,5]
c = [[x*y  for x in b] for y in a]
print(c)

长度,但这也适用于

a = ['a','b','c','d']
b = [1,2,3,4,5]
nest_array = []
for i in range(0,len(a)):
arr = []
for val in b:
str1 = ""
while len(str1) < val:
if len(str1) == val:
break
else:
str1 += a[i]
arr.append(str1)
nest_array.append(arr)
print(nest_array)

最新更新