【问题标题】:alter the format of output改变输出格式
【发布时间】:2021-05-12 04:24:07
【问题描述】:

我有以下代码:

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]

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

【问题讨论】:

    标签: python list output nested-lists


    【解决方案1】:

    你必须这样做:

    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 变量必须在循环内才能更新整个变量

    【讨论】:

      【解决方案2】:

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

      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]]
      

      【讨论】:

        【解决方案3】:

        你可以使用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)
        

        【讨论】:

          【解决方案4】:

          你也可以试试:

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

          【讨论】:

            猜你喜欢
            • 2012-03-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-11-10
            • 2022-01-21
            • 2021-08-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多