可能是一个简单的解决方法,但我已经尝试了所有方法。我试图将单个数组中的2d数组中的值连接并打印出来,如果没有用实际的空格隔开每个字符,则不要将它们分开。例如,我的代码现在执行的是“ H E L L O W O R L D”而不是“ HELLO WORLD”。有人可以帮忙吗。
for a in range(int(numOfColumns)):
for b in range(numOfRows):
#''.join(Matric[b][a])
#print(Matrix[b][a]),
#print(Matrix[b][a]),
答案 0 :(得分:2)
您可以使用列表表达式:
result = " ".join(["".join([i for i in row]) for row in Matrix])
或者只是
result = " ".join(["".join(row) for row in Matrix])
@ Tomothy32指出。
这里是一个表达式
"".join(row)
从一行创建一个字符串,例如:
row = ['h', 'e', 'l', 'l', 'o']
"".join([row])
Out:
hello
对于迭代行的外部循环几乎相同,但是它使用空格将字符串连接起来:
result = " ".join(...)
或者您可以逐步进行操作,但是不清楚:
substrings = []
for row in Matrix:
substr = ""
for char in row:
substr += char
substrings.append(substr)
result = " ".join(substrings)
没有comprehensions,我不知道如何轻松地做到这一点。也许您应该使用它。
修改
运作方式:
Matrix = [
['H', 'e', 'l', 'l', 'o'], # it's a first row
['w', 'o', 'r', 'l', 'd'] # it's a second row
]
Python首先遍历外部层,即
[print(row) for row in Matrix]
将打印类似的内容:
['H', 'e', 'l', 'l', 'o'],
['w', 'o', 'r', 'l', 'd']
每行都是一个列表(在这种情况下)。因此,我们可以使用内部循环(列表理解)对其进行迭代:
[[print(i, end='') for i in row]) for row in Matrix]
Out:
"hello"
"world"
({end=''
仅将换行符更改为空字符串)。现在,您可以将print更改为"".join
方法并获得所需的内容。
如何迭代列?好吧,这并不是那么容易,尤其是当字符串的长度不同时。如果长度相等,则可以使用压倒理解(此处为answered):
[[row(i) for row in matrix] for i in range(max(len(r) for r in Matrix))]
Out:
[['h', 'w'],
['e', 'o'],
['l', 'r'],
['l', 'l'],
['o', 'd']]
但是可能更容易生成已转置的数据。有一些有关理解的教程,您可以阅读,例如this。理解是一个非常有用的工具。
答案 1 :(得分:0)
假设在martix以下:
Matric = [['h', 'e', 'l', 'l', 'o'], ['w', 'o', 'r', 'l', 'd']]
mat = ''
for x in Matric[0]:
mat = ''.join([mat,x])
mat += ' '
for y in Matric[1]:
mat = ''.join([mat, y])
print(mat)