确定蛋白浓度(二)|自学生信Python(第二十二天)

确定蛋白浓度(二)

问题回顾:如何将原始数据表(表 7. 1)转换为更简单的表(表 7.2)?

在下面的 Python 会话中,会对初始表,即包含数个列表的列表执行一些操作步骤,将一个新函数zip() 使用两次:第一次,将表调转了 90° ,第二次,组合表中的两列以获得一个新的二维表。
其参考代码如下:

table = [
    ['protein','ext1','ext2','ext3'],
    [0.16,0.038,0.044,0.040],
    [0.33,0.089,0.095,0.091],
    [0.66,0.184,0.191,0.191],
    [1.00,0.280,0.292,0.283],
    [1.32,0.365,0.367,0.365],
    [1.66,0.441,0.443,0.444]

]
table = table[1:]
protein,ext1,ext2,ext3 = zip(*table)
extinction = ext1+ext2+ext3
protein = protein*3
table =zip(protein,extinction)
for prot,ext in table:
    print(prot,ext)

输出结果为:


命令的含义

启动该程序,会打印转化为双列格式的表格。 程序分为两部分。 在顶部,数据写成嵌套其他列表的列表格式。 使用这种嵌套列表,该程序就能清晰地表示二维数据。 在底部,该转换由 5 个步骤完成。
①首先,删除标签行(table = table[1:]);
②其次,创建四个元组, 每个包含一列数据(protein, ext1, ext2, ext3 = zip( table));
③第三,将消光值列复制到一个元 组(extinction = ext1 + ext2 +ext3),并将蛋白质列相应地延长 (protein = protein
3) 。 这里,蛋白质元组乘以 3. 使相同的值重复三次,因为在上表中一个蛋白质对应三个消光值;
④第四,两列组合成一个新的二维表(table = zip(protein, extinction) );
⑤最后,将表的内容 逐行打印,
其结果是含有蛋白质的浓度和相应的消光值对的嵌套列表。

二维表的表示方法

我们先从含有一列蛋白质浓度和三列消光值的表开始(见表 7.1)。table 变量的类型是包含其他列表的列表。 任何表可以被编码为含有列表的列表,也称为嵌套列表。 例如,表

可以编码为嵌套列表
square = [[1,2,3] , [4,5,6] , [7,8,9]]

或嵌套元组的列表

square = [(1,2,3) , (4,5,6) , ( 7,8,9 )]

Python列表可以保存所有类型的数据,也包括其他列表。 在由嵌套列表表示的表中,有一个单一的外列表(包含内部的行〉和内列表(一行一个) .外列表包含内列表,这样表就有了清晰的结构。 此嵌套列表结构又称为二维阵列

问答: 能否使用 python三维表?
能有多少列表相互嵌套并没有限制 。 例如,可以创建一个 2x2x2 元素的三维列表如下:
cube = [[[0,1],[2, 3]],[[4,5], [6,7]]]

三维表创建后,数据规模可能很快就会变得非常巨大(例如,如果表在每个维度有 100 个位 置,那么将是 100^3或 10^6个单元格的表)。有了这样的数量级 , 程序很容易变得非常慢,除非能使用复杂的算法并有大量的内存和/或功能强大的计算机。有一条经验法则是, 当数据越多时,就越必须提前计划。 当数据变得更复杂时,用像[1][2][3]这样的索引访 问列表就会十分复杂低效,这时类可以使数据更具有可读性。

访问行和单元格

将表格表示为嵌套列表后,可以通过索引访问各行,以同样的方式也可以访问任何列表。 例如,访问第二行可以用如下指令(索引从 0 开始) :

second_row = table[1]

通过添加表示列数的第二个索引,可以访问单元格。例如,第二行的第三列中的单元可以这样访问:
second_row_third_column = table [1][2]

或者,如果要操作数据, 则可以把它赋给指定单元格:

table [1][2] = 0.123

用单个 for 循环,可以对表中的所有行进行操作 :
for row in table:
print(row)

用 for 双循环,可以依次访问各行的每个单元格 :

for row in table:
for cell in row:
print(cell)
在 Python 的嵌套列表中,访问行和单元格是最简单的操作。后面将讨论稍复杂的访问列操作。

日常结尾:
虽然这是个小小的计算程序,但对于初学者的我来说每一次对原代码的升级改造,哪怕是读懂后的注释都感觉是一次进步提升,总之代码虽小,动手最重要!希望更多学习Python的爱好者不要像我一样眼高手低,学习编程就是要,思考,敲码,思考,敲码,敲码,再敲码!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容