我想得到一个类似的输出
['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)