Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用矩阵动态格式化字符串?_Python_Matrix - Fatal编程技术网

Python 如何使用矩阵动态格式化字符串?

Python 如何使用矩阵动态格式化字符串?,python,matrix,Python,Matrix,对不起,我的英语不好 因此,我尝试用矩阵格式化字符串,例如: matrix = [ ['x', 'y', 'z'], ['u', 'v', 'w'], ['r', 's', 't'] ] string = "H{}ll{} W{}rld" 将根据字符串的{}数量生成矩阵。其思想是使用.format()为字符串中的每个“{}”使用矩阵中的每个数组: 结果是: H['x', 'y', 'z']ll['u', 'v', 'w'] W['r', 's', 't']rld 因此,最好的解决办法是:

对不起,我的英语不好

因此,我尝试用矩阵格式化字符串,例如:

matrix = [ ['x', 'y', 'z'], ['u', 'v', 'w'], ['r', 's', 't'] ]
string = "H{}ll{} W{}rld" 
将根据字符串的{}数量生成矩阵。其思想是使用.format()为字符串中的每个“{}”使用矩阵中的每个数组:

结果是:

H['x', 'y', 'z']ll['u', 'v', 'w'] W['r', 's', 't']rld
因此,最好的解决办法是:

for i in range(0, len(matrix[0])) :
    for j in range(0, len(matrix[1])) :
        for k in range(0, len(matrix[2])) :
            print(string.format(matrix[0][i], matrix[1][j], matrix[2][k]))
但是可以更改字符串和矩阵,使此代码无效,因此我生成了一个数组,将元素用作迭代器:

iterators = [0] * len(matrix)
然后我编写了一个递归代码来迭代迭代器中的元素,其格式是:

string.format(string.format(matrix[0][iterators[0]], matrix[1][iterators[1]], matrix[2][iterators[2]]))
然后我试着以友好的方式:

string.format(*matrix[*iterators])

这不起作用(无效语法错误),有什么办法可以让它起作用吗?我希望一切都清楚。谢谢。

假设您希望输出为“HxyzlluvwWrstrld”,您可以使用以下方法:

string.format(*[''.join(line) for line in matrix])

首先,通过生成字符串列表来平整矩阵
['xyz',uvw',rst']
,然后使用
*
操作符解压此列表,以便可以使用
格式
函数。

假设希望输出为“HxyzlluvwWrstrld”,则可以使用以下方法:

string.format(*[''.join(line) for line in matrix])

首先,通过生成字符串列表来平整矩阵
['xyz',uvw',rst']
,然后使用
*
操作符解压该列表,以便可以使用
格式
函数。

这被称为笛卡尔积,在itertools中实现得很好

import itertools

matrix = [ ['x', 'y', 'z'], ['u', 'v', 'w'], ['r', 's', 't'] ]
string = "H{}ll{} W{}rld"
for group in itertools.product(*matrix):
    print(string.format(*group))

这被称为笛卡尔积,在itertools中实现得很好

import itertools

matrix = [ ['x', 'y', 'z'], ['u', 'v', 'w'], ['r', 's', 't'] ]
string = "H{}ll{} W{}rld"
for group in itertools.product(*matrix):
    print(string.format(*group))

你想要的输出是什么?“Hxyzlluvw Wrstrld”?类似于
print[string.format(*m)for m in matrix]
-->
['Hxlly Wzrld','Hullv wrld','Hrlls Wtrld']
。当矩阵的长度变化时,我也会尝试。THXHI@ KobePol。如果这个或任何答案都解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这么做。你想要的输出是什么?“Hxyzlluvw Wrstrld”?类似于
print[string.format(*m)for m in matrix]
-->
['Hxlly Wzrld','Hullv wrld','Hrlls Wtrld']
。当矩阵的长度变化时,我也会尝试。THXHI@ KobePol。如果这个或任何答案都解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。这不是我想要的结果,但是你给出了一个有趣的答案,我不知道“for”可以这样使用,thx:)这不是我想要的结果,但是你给出了一个有趣的答案,我不知道“for”可以这样使用,thx:)效果非常好,thx!我应该搜索更多有关笛卡尔产品的信息,这些产品非常有效,谢谢!我应该搜索更多关于笛卡尔积的信息