改变输出格式

alter the format of output

我有以下代码:

a=[1,2,3,4]
b=[5,6,7,8]
c=[9,10,11,12]
d=[a,b,c]
print(d)
result=[]
for i in d:
    for j in i:
        f=j**2
        result.append(f)  
    print(result)

这是我得到的输出:

[1, 4, 9, 16]
[1, 4, 9, 16, 25, 36, 49, 64]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144]

这是我想要的输出:

[1, 4, 9, 16]
[25, 36, 49, 64]
[81, 100, 121, 144]

我只想使用这个嵌套列表来获得所需的输出。

你必须这样做:

a=[1,2,3,4]
b=[5,6,7,8]
c=[9,10,11,12]
d=[a,b,c]
print(d)
#result=[]
for i in d:
  result = []
  for j in i:
    f=j**2
    result.append(f)  
  print(result)

您的 result 变量必须在循环内才能更新整个变量

每次迭代新的子列表时都需要清空结果。这样它就不会继续添加到结果中。

a=[1,2,3,4]
b=[5,6,7,8]
c=[9,10,11,12]
d=[a,b,c]
for i in d:
    result=[]
    for j in i:
        result.append(j**2)  
    print(result)

另一种选择是将 result 分配给主 for 循环之外的空列表,但使用 .clear().

a=[1,2,3,4]
b=[5,6,7,8]
c=[9,10,11,12]
d=[a,b,c]
result = []
for i in d:
    result.clear()
    for j in i:
        result.append(j**2)  
    print(result)

您还可以使用列表理解来简化您的代码。

a=[1,2,3,4]
b=[5,6,7,8]
c=[9,10,11,12]
result = [[num**2 for num in l] for l in [a,b,c]]

您可以使用 list comprehensions :

a=[1,2,3,4]
b=[5,6,7,8]
c=[9,10,11,12]
d=[a,b,c]
print(d)

def fsquare(a):
    return a**2

def print_line_by_line(l):
    [print(e) for e in l]

result1=[]
for l in d:
    #use list comprehensions to apply a function on all items of a list
    f=[fsquare(element) for element in l]
    result1.append(f)  
print_line_by_line(result1)

result2=[]
#use list nested list comprehensions to apply a function on all items within nested lists
result2=[[fsquare(element) for element in l] for l in d]
print_line_by_line(result2)

print(result2)

您也可以试试:

for item in (list(map(lambda x:x**2,i)) for i in d):
    print(item)