请问这段Python 代码写了什么

img import sys

full_count_files = sys.argv[1:] n_samples = len(full_count_files)

count_matrix = dict()

for i in range(n_samples): for line in open(full_count_files[i]): locus,only,runon3p,passive = line.strip().split('\t')[:4] if locus.split('.')[1]== '1' and float(only)+float(runon3p) > 9*float(passive): if locus not in count_matrix: count_matrix[locus] = [0]*n_samples count_matrix[locus][i] = int(float(only))+int(float(runon3p))

print('locus'+'\t'+'\t'.join(full_count_files)) for locus in count_matrix: print (locus+'\t'+'\t'.join([str(x) for x in count_matrix[locus]]))

各位大神好,我是python 入门小白,有个朋友帮我写了一段这个代码 来塞选n 个 txt file 里重复的部分并写到一个matrix 里。 请问能否详细解答一下每一段在干什么,要读懂这些代码我需要从什么地方开始学,或者说我需要学那些关于Python的东西

谢谢大家

参考一下如下注释解释:

import sys#导入使用的库
full_count_files = sys.argv[1:] #命令行传参,sys.argv[0]是脚本本身,argv[1:]为运行时传入的参数列表,这里是一组文件名
n_samples = len(full_count_files)#获取文件名列表的长度
count_matrix = dict()#定义一个字典 

for i in range(n_samples): #按文件数遍历
    for line in open(full_count_files[i]): #遍历打开的文件每行内容
        locus,only,runon3p,passive = line.strip().split('\t')[:4] #将每行去除行前后空格再用制表符分隔切片的前四个字符串分别赋值给四个变量
        if locus.split('.')[1]== '1' and float(only)+float(runon3p) > 9*float(passive): #判断如果取到的第一个变量用点号分隔后的第二个字符是‘1’且第二个、第三个变量转换为浮点数后之和大于第四个变量浮点数的9倍时,条件成立
            if locus not in count_matrix: #判断locus变量是否已在字典中存在,如不存在执行下面语句
                count_matrix[locus] = [0]*n_samples#将字典中健为locus的值赋值为元素全是0的列表,个数为全部文件总数 
            count_matrix[locus][i] = int(
                float(only))+int(float(runon3p))  # 将only和runon3p转换成浮点数取整求和后赋给字典中健为locus的值

print('locus'+'\t'+'\t'.join(full_count_files)) #打印输出以制表符为分隔符拼接的文件名字符串
for locus in count_matrix: #以字典键名遍历字典
    print(locus+'\t'+'\t'.join([str(x) for x in count_matrix[locus]]))  # 打印输出以制表符为分隔符拼接的字典的值的字符串

里面涉及到的内容:

sys模块的sys.argv,用来接收外部传入的参数

数据类型list(列表),列表split方法切片,len()函数求列表长度,通过索引取列表的某一个值

数据类型dict(字典)

数据类型str(字符串)

for循环,遍历一个序列

函数open() 打开文件

strip函数(去除字符串前后的指定字符)

字符串的切片(通过index切片,以及通过split方法切片)

int(整型数字),float(浮点数),数字格式的str(字符串)之间的转换

if 条件判断的写法

a>b a==b a<b 比较大小

if key in/not in dict 判断某个值是否在字典中(是否是该字典的一个键)的写法

dict[key]=value 对字典赋值的一种写法

list*n 将列表复制n次构造新列表的写法

list[n]=value,根据index修改列表中特定元素的写法(将列表的第n个值修改为value)

print函数 在控制台输出打印文本

字符串.join方法 将指定字符串插入元素序列中构造新字符串

大致就是这些吧,如有遗漏,也没办法

至于一段一段地解释,不现实,因为 1.代码里涉及到你的txt内具体的文本 2.有些涉及到的知识点正常上课的时候都得花好几个课时

建议你先找教程自学,网上高质量的视频、文字教程非常多,而且python的自学难度相对来说是比较低的

另外,既然代码是你朋友写的,为什么不直接去问他代码怎么理解???

找给你写代码的那位朋友不是更好,首先肯定是学py的环境搭建,在是基础语法,在是面向对象,
采纳,谢谢