繁体   English   中英

从列表列表创建一个新列表,并完全用Python打印

[英]Create a New List from a List of Lists and print exactly in Python

我想从Python列表中创建一个List。 这是我的方法

    grid=[[0,1,1], \
          [1,0,1], \
          [1,1,1], \
          [1,0,0]]
    grid2=[]
    for x in range(0,len(grid)):
     for y in range(0,len(grid[x])):
       if grid[x][y]==0:
         grid2.append(22)
       if grid[x][y]==1:
         grid2.append(44)

    for item in grid2:print grid2

我期望的输出在grid2中的列表将是这样的:

22,44,44
44,22,44
44,44,44
44,22,22

但似乎我的逻辑错了。 需要一些帮助

您的print循环错误。 如上所述,您可以为grid2中的每个项目完整地打印grid2 您可以通过打印item来修复它。

for item in grid2: print item

如果你想print你在问题中指定的确切输出, 同时保留一维列表 ,你可以从这个答案中借用一些代码并使用",".join

def chunks(l, n):
    """ Yield successive n-sized chunks from l.
    """
    for i in xrange(0, len(l), n):
        yield l[i:i+n]


for item in chunks(grid2, 3): print ",".join(str(x) for x in item)

输出:

22,44,44
44,22,44
44,44,44
44,22,22

您需要将grid2视为列表列表。 至少那是我认为你要做的事情。

grid=[[0,1,1], \
      [1,0,1], \
      [1,1,1], \
      [1,0,0]]
grid2=[]
for x in range(0,len(grid)):
    grid2.append([])
    for y in range(0,len(grid[x])):
        if grid[x][y]==0:
           grid2[x].append(22)
        if grid[x][y]==1:
           grid2[x].append(44)

for item in grid2:
    print ','.join([str(x) for x in item])

您的打印循环错误。

for item in grid2:
    print (item)

使用numpy可以获得更好的解决方案:

a = np.array([[0,1,1],
      [1,0,1],
      [1,1,1],
      [1,0,0]])
np.where(a == 0, 22, 44)
Out[23]: 
array([[22, 44, 44],
       [44, 22, 44],
       [44, 44, 44],
       [44, 22, 22]])

您应该替换for item in grid2:print grid2 with for item in grid2:print grid2for item in grid2:print item (对于打印整个列表的每个项目)

尝试这个:

grid=[[0,1,1], \
  [1,0,1], \
  [1,1,1], \
  [1,0,0]]

grid2=[",".join(["44" if flag else "22" for flag in row]) for row in grid]
print "\n".join(grid2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM