将字符从2d数组连接并打印到字符串中

时间:2019-01-17 07:05:40

标签: python

可能是一个简单的解决方法,但我已经尝试了所有方法。我试图将单个数组中的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]),

2 个答案:

答案 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)