python - 仅在所有元素为 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']
]
推荐阅读
- ios - 矩阵聊天冻结
- java - Opendaylight - 如何控制哪些数据进入哪个分片
- javascript - 如何使用 JavaScript 将 XML 数据显示到 TML Lightbox?
- c++ - valgrind 使用 std::string 报告无效读取
- powerbi - 如何在 Power BI 中添加选定的工具提示
- reactjs - 反应分享。抛出错误 TypeError: Super expression must be null or a function, not undefined 当试图在 require 中使用它时
- c - 如何让编译器警告我缺少返回值?
- python - 在 Django 中为新帖子保存 category_id
- android - 第二个活动的 Anko 布局未显示
- automation - 尝试使用 autohotkey 对本地 html 文件执行某些处理时出现“rpc 服务器不可用”