
[英]Create a new pandas dataframe from a python list of lists with a column with lists
[英]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 grid2
中for 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.