学Python时,你是不是也遇到过这些崩溃瞬间:想存数据,却不知道用列表还是字典?代码重复写,改一处要动十处?运行程序突然报错,连哪里错了都看不懂?
🔥 概念1:Python基础——“给数据起名+控制程序走哪条路”
想象你在整理实验室数据:
变量是“给试管贴标签”(比如 tube_1 = "DNA样本");
数据类型是“试管里装的是液体(字符串)、粉末(整数)还是开关(布尔值)”;
控制流是“如果温度超过37℃,就停止加热”(if),或者“把100个样品逐个检测”(for循环)。
示例代码:
# 给样本贴标签+判断类型sample_type = "RNA" # 变量if sample_type == "DNA": print("提取DNA")else: print("提取RNA") # 输出:提取RNA# 循环检测100个样品for i in range(1, 101): print(f"检测第{i}个样品")
🔥 概念2:数据结构——“给数据找个合适的‘家’”
实验室的样品太多,得分类放:
列表(list):像“试管架”,按顺序放样品(可随时加新样品);
字典(dict):像“样品档案柜”,用“样品名”查“浓度”(键值对);
元组(tuple):像“密封的样本管”,一旦封好就不能改;
集合(set):像“抽奖箱”,自动去掉重复的样品编号。
示例代码:
# 列表:存5个样品名sample_list = ["样品A", "样品B", "样品C"]sample_list.append("样品D") # 新增样品# 字典:存样品名和浓度sample_dict = {"样品A": 10.5, "样品B": 8.2}print(sample_dict["样品A"]) # 查浓度:10.5# 元组:存固定的实验参数(不能改)params = (37, 1000) # 温度37℃,转速1000rpm# 集合:去重样品编号sample_ids = [1, 2, 2, 3]unique_ids = set(sample_ids)print(unique_ids) # 输出 {1,2,3}
🔥 概念3:函数——“把重复操作打包,一次写多次用”
比如每天要算“样本浓度=(吸光度×稀释倍数)/光程”,如果手动算100次,早就累趴了!用函数打包后,只需要调用一次:
示例代码:
def calculate_concentration(absorbance, dilution, path_length=1): """计算样品浓度(光程默认1cm)""" concentration = (absorbance * dilution) / path_length return concentration# 调用函数:吸光度0.5,稀释10倍,光程1cmconc = calculate_concentration(0.5, 10)print(f"样品浓度:{conc}") # 输出:5.0
🔥 概念4:模块——“借别人的工具,不做重复造轮子的人”
Python自带“工具箱”(标准库,比如 math算数学),还有“第三方工具箱”(比如 pandas处理表格)。需要时就“借”过来:
示例代码:
# 借标准库math:计算标准差import mathdata = [1, 2, 3, 4, 5]mean = sum(data) / len(data)variance = sum((x - mean)**2 for x in data) / len(data)std_dev = math.sqrt(variance)print(f"标准差:{std_dev}") # 输出:1.414...# 借第三方库pandas:处理测序数据表格import pandas as pd# 假设data是测序reads的统计(实际需用真实数据)reads_data = {"sample": ["S1", "S2"], "reads": [10000, 12000]}df = pd.DataFrame(reads_data)print(df)
🔥 概念5:类与对象——“从‘图纸’到‘房子’,让代码更模块化”
比如你要做“细胞培养系统”:
示例代码:
class Cell: def __init__(self, cell_type, count): self.cell_type = cell_type # 细胞类型(如“干细胞”) self.count = count # 细胞数量 def divide(self): # 细胞分裂(数量翻倍) self.count *= 2 print(f"{self.cell_type} 分裂后数量:{self.count}")# 创建对象:100个干细胞stem_cell = Cell("干细胞", 100)stem_cell.divide() # 输出:干细胞 分裂后数量:200
🔥 概念6:异常处理——“程序出错了?别慌,抓住它!”
比如你读测序数据时,文件可能被误删(报错),或者除以0(不可能的情况)。用 try/except抓住错误,程序就不会崩:
示例代码:
try: # 尝试打开不存在的文件(会报错) with open("missing_file.txt", "r") as f: content = f.read()except FileNotFoundError: # 抓住“文件不存在”的错误 print("错误:文件不存在,请检查路径!")else: print("文件读取成功")finally: print("不管有没有错,我都会执行(比如关闭资源)")
🔥 概念7:文件操作——“和电脑文件对话,读取/写入数据”
比如你把测序结果存在 result.txt,需要读取出来分析,或者把新的分析结果写进去:
示例代码:
# 写入分析结果(覆盖原内容)with open("result.txt", "w", encoding="utf-8") as f: f.write("样本S1:表达量100\n") f.write("样本S2:表达量150")# 读取文件内容with open("result.txt", "r", encoding="utf-8") as f: lines = f.readlines() for line in lines: print(line.strip()) # 输出:样本S1:表达量100 / 样本S2:表达量150
🔥 概念8:虚拟环境——“给每个项目装独立的‘Python小房间’”
比如项目A需要 pandas 1.0,项目B需要 pandas 2.0,如果装在一起会冲突。用虚拟环境给每个项目“隔间”:
示例代码:
# 创建虚拟环境(叫my_project_env)python -m venv my_project_env# 激活环境(Windows)my_project_env\Scripts\activate# 激活环境(Mac/Linux)source my_project_env/bin/activate# 安装项目A需要的库(只在当前环境生效)pip install pandas==1.0# 退出环境deactivate
🔥 概念9:Pythonic风格——“让代码像英语一样易读”
比如生成1-5的平方数,用列表推导式比for循环更简洁:
示例代码:# 不Pythonic:for循环squares = []for i in range(1, 6): squares.append(i**2)# Pythonic:列表推导式(一行搞定)squares = [i**2 for i in range(1, 6)]print(squares) # 输出 [1,4,9,16,25]# 变量名规范:用下划线,见名知意user_age = 25user_name = "小明"
小结
这9个核心概念,就像Python的‘武功招式’——基础招式练熟了,便于解锁高级的数据分析等大招。