[英]Adding elements only in first row and first column of a matrix with all elements 0
我正在尝试在矩阵的第一行和第一列中添加字符串。 我创建了一个矩阵,如下所示。
cation = ['O', 'I', 'N', 'Cl', 'Se', 'P', 'S', 'Br', 'F', 'Te']
anion =['Hg', 'Bi', 'Pd', 'Ni', 'Be', 'Fe', 'pb', 'Mo', 'Co', 'V', 'Au', 'Sc', 'Rb', 'Mg', 'H', 'Na', 'Al', 'Os', 'Ru', 'Cd', 'Li', 'Tl', 'Ca', 'Cu', 'Ba', 'In', 'Pt', 'Ir', 'Ti', 'Tc', 'Ga', 'W', 'k', 'Rh', 'Cr', 'Zr', 'Ta', 'Sn', 'Hf', 'Ag', 'Sr', 'Y', 'Mn', 'Re', 'Nb', 'Zn', 'Cs']
column = len(cation) +1
row = len(anion) +1
mat = [[ 0 for x in range(column)] for y in range(row)]
print(mat)
for x in range(column):
for y in range(row):
mat[0][x] = [i for i in cation]
mat[x][0] = [j for j in anion]
#print(mat[0][y])
我在长度上加了 1,因为这样我可以保存所有行和列以在其中添加其他元素。
现在我想在第一行添加cation
,在第一列添加anion
元素,所以我的矩阵包含第一行的所有cation
和列中的anion
。
您能否就此提供一些反馈?
您可以在创建mat
本身时应用条件,如下所示
mat = [[ 0 if x == 0 and y == 0 else cation[x - 1] if y == 0 else anion[y-1] if x == 0 else 0 for x in range(column)] for y in range(row)]
或者将上面的代码写在一个函数中以避免混淆。
def findElement(x, y):
if x == 0 and y == 0:
return 0
if y == 0:
return cation[x - 1]
if x == 0:
return anion[y-1]
return 0
mat = [[ findElement(x, y) for x in range(column)] for y in range(row)]
完整的代码是
cation = ['O', 'I', 'N', 'Cl', 'Se', 'P', 'S', 'Br', 'F', 'Te']
anion =['Hg', 'Bi', 'Pd', 'Ni', 'Be', 'Fe', 'pb', 'Mo', 'Co', 'V', 'Au', 'Sc', 'Rb', 'Mg', 'H', 'Na', 'Al', 'Os', 'Ru', 'Cd', 'Li', 'Tl', 'Ca', 'Cu', 'Ba', 'In', 'Pt', 'Ir', 'Ti', 'Tc', 'Ga', 'W', 'k', 'Rh', 'Cr', 'Zr', 'Ta', 'Sn', 'Hf', 'Ag', 'Sr', 'Y', 'Mn', 'Re', 'Nb', 'Zn', 'Cs']
column = len(cation) +1
row = len(anion) +1
# you can use either of the following approach
# mat = [[ 0 if x == 0 and y == 0 else cation[x - 1] if y == 0 else anion[y-1] if x == 0 else 0 for x in range(column)] for y in range(row)]
mat = [[ findElement(x, y) for x in range(column)] for y in range(row)]
print(mat)
使用以下代码格式化输出
import numpy as np
print(np.matrix(mat))
输出是
[
['0' 'O' 'I' 'N' 'Cl' 'Se' 'P' 'S' 'Br' 'F' 'Te']
['Hg' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Bi' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Pd' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Ni' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Be' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Fe' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['pb' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Mo' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Co' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['V' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Au' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Sc' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Rb' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Mg' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['H' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Na' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Al' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Os' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Ru' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Cd' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Li' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Tl' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Ca' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Cu' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Ba' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['In' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Pt' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Ir' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Ti' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Tc' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Ga' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['W' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['k' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Rh' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Cr' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Zr' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Ta' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Sn' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Hf' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Ag' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Sr' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Y' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Mn' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Re' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Nb' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Zn' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
['Cs' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0']
]
从你的问题中推断出你想要做什么,因为你不会回复评论,如果你想让你的矩阵看起来像这样(让我们举一个小矩阵示例,以便在这里轻松格式化) -
[[0, 'a', 'b', 'c'],
['x', 0, 0, 0],
['y', 0, 0, 0],
['z', 0, 0, 0]]
其中cation = ['a', 'b', 'c']
和anion = ['x', 'y', 'z']
然后你会做以下事情 -
mat = [[0 for x in range(len(cation)+1)] for y in range(len(anion)+1)]
mat[0][1:] = cation
for row, anion_element in zip(mat[1:],anion):
row[0] = anion_element
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.