f-string和sz

f"{sid}_KP_{sample_ids.index(sid)+1}"

Python 的格式化字符串写法,叫做 f-string(full name: formatted string literals),是 Python 3.6+ 引入的一种 更简洁高效的字符串拼接方式


✅ 一、这段代码含义拆解

f"{sid}_KP_{sample_ids.index(sid)+1}"

假设:

sid = "sampleA"
sample_ids = ["sampleA", "sampleB", "sampleC"]

执行逻辑:

  • sample_ids.index(sid) 会找到 "sampleA" 在列表中的索引(是 0)
  • +1 让编号从 1 开始,而不是 0
  • 所以这个格式化字符串的结果是:
"sampleA_KP_1"

也就是说,它把 sid 和编号拼成一个唯一的标签名或样本名。


🧩 二、f-string 的基本用法

1. 基本变量插入

name = "Alice"
f"Hello, {name}!"   # 输出: Hello, Alice!

2. 表达式计算

a = 3
b = 4
f"{a} + {b} = {a + b}"  # 输出: 3 + 4 = 7

3. 调用函数

import math
f"π is roughly {math.pi:.2f}"  # 输出: π is roughly 3.14

4. 字符串方法/切片

s = "HELLO"
f"{s.lower()} world"  # 输出: hello world

🎯 三、f-string vs 其他格式化方法

方法 示例 推荐程度
% 格式化 "Hello, %s" % name ❌ 老旧,不推荐
str.format() "Hello, {}".format(name) ✅ 可用,但不够简洁
f-string f"Hello, {name}" ✅✅ 强烈推荐,直观高效

🔥 四、常用技巧总结

操作 示例 说明
数字格式化 f"{x:.2f}" 保留两位小数
填充对齐 f"{x:>10}" 右对齐10宽度
0填充编号 f"{i:03}" 001, 002, …
带表达式 f"{lst.index(val)+1}" 执行列表操作
多变量拼接 f"{prefix}_{id}_{i}" 多元素拼接

✅ 小结

  • f"{...}" 是 Python 推荐的现代字符串拼接方式。
  • 可以内嵌变量、表达式、函数调用。
  • 写法简洁、执行效率高、易读性强。

在 Python 中,可以使用内置函数和关键字查看、添加、删除变量。下面是 系统地整理出的一些常用操作方法:


🔍 一、查看当前所有变量信息

1. 使用 globals()locals()

  • globals():查看全局作用域变量(通常用于模块或脚本顶层)
  • locals():查看当前局部作用域变量(比如函数内部)
a = 10
b = "hello"

print(globals())  # 返回一个包含所有全局变量的字典
print(locals())   # 在脚本中与 globals() 相同

你可以用:

for name, value in globals().items():
    print(f"{name} = {value}")

2. 使用 dir() 查看变量名(不包括值)

dir()         # 返回当前作用域下的所有名称(变量、函数、模块等)

➕ 二、新增变量

1. 直接赋值

x = 123
name = "Nathan"

2. 动态添加(使用 globals()

globals()["new_var"] = 456
print(new_var)  # 输出 456

适用于需要用字符串构建变量名的情况。


➖ 三、删除变量

1. 使用 del

x = 100
del x  # 删除变量 x

2. 批量删除(配合 globals()locals()

for var in ["a", "b", "c"]:
    if var in globals():
        del globals()[var]

⚠️ 注意事项

  • 使用 globals() 改动变量是危险操作,慎用在函数内部。
  • 删除变量后再访问会抛出 NameError
  • dir() 会显示所有名称,包括内置名称和导入的模块。
  • 如果在函数里查看变量,locals() 才是真正有效的局部变量表。

🧪 示例:完整流程演示

a = 1
b = 2
globals()["c"] = 3

print("所有变量名:", dir())
print("变量和值:")
for k, v in globals().items():
    if not k.startswith("__"):
        print(f"{k}: {v}")

del a
print("删除 a 后:", "a" in globals())  # False

sZ 是基于 ZMODEM 协议的传输命令,通常用于从远程服务器将文件发送到本地终端(如 MobaXterm、SecureCRT、iTerm2)。但它不是一个实时查看图像的工具,而是一个“文件下载工具”。不过你可以通过它将生成的图像(如 UMAP 图)传输到本地并立刻打开查看


✅ 用 sz 命令查看图像的正确方式

步骤 1:确认你使用的是支持 ZMODEM 的终端

你需要确保你的终端支持 ZMODEM 文件接收功能,常见支持终端:

终端 是否支持 ZMODEM
MobaXterm (Windows) ✅ 支持
SecureCRT (Windows/macOS) ✅ 支持
iTerm2 + lrzsz (macOS) ✅ 支持
普通 Linux 终端 + tmux/ssh ❌ 不支持,需安装配套工具

步骤 2:定位你生成的图像文件

默认图像文件通过如下代码保存:

sc.pl.umap(adata, color=["leiden"], save="_clusters.png")

这将在当前工作目录下生成一个名为 figures/umap_clusters.png 的图像文件。


步骤 3:用 sz 命令传输图像

sz figures/umap_clusters.png

这会触发终端弹窗,提示你是否接收文件,点击“接收”即可。


步骤 4:在本地打开图像

接收后图像会保存在你终端默认的下载目录中(例如 MobaXterm 的 “Downloads” 文件夹),你可以直接点击打开查看 UMAP 聚类图。


📌 小贴士

  • 多图打包下载:

    tar czf umap_figures.tar.gz figures/
    sz umap_figures.tar.gz
    
  • 如果你使用的是 Jupyter Notebook,也可以直接内嵌查看:

    from IPython.display import Image
    Image(filename="figures/umap_clusters.png")
    

❗ 注意事项

  • sz 无法用于实时传输图像帧(比如视频流、动态图等)

  • 如果图像未保存或保存路径不对,sz 无法找到对应文件

  • 如果你的远程服务器没有安装 lrzsz,需要先安装:

    sudo apt install lrzsz   # Debian/Ubuntu
    sudo yum install lrzsz   # CentOS/RHEL
    

在使用 nano 文本编辑器时,以下是一些常用的快捷键操作(特别是与整行操作、行尾、行首相关的):


🧹 基本快捷键导航

操作 快捷键
移动到行首 Ctrl + A
移动到行尾 Ctrl + E
向上滚动一页 Ctrl + Y
向下滚动一页 Ctrl + V
跳转到某一行 Ctrl + _ 然后输入行号后回车

🧾 文本编辑快捷键

操作 快捷键
剪切整行 Ctrl + K
粘贴 Ctrl + U
复制标记区域(需要先设置标记) Alt + 6
删除字符 Ctrl + D(删除光标处字符)
回退(Undo) Alt + U
重做(Redo) Alt + E
搜索字符串 Ctrl + W
替换字符串 Ctrl + \\(也可按提示替换)

🧷 标记与选中

操作 快捷键
开始/取消标记文本(选区) Ctrl + ^(按一次开始,再按一次取消)

提示:标记后可以用 Ctrl + K 删除,或者 Alt + 6 复制,再用 Ctrl + U 粘贴。


🔚 行操作相关总结

  • 整行删除(剪切)Ctrl + K
  • 行尾定位Ctrl + E
  • 行首定位Ctrl + A
  • 粘贴被剪切的行Ctrl + U

💡 小技巧

  1. nano 启动时带行号

    nano -c filename
    
  2. 使用 .nanorc 启用持久设置

    ~/.nanorc 中添加:

    set linenumbers
    set mouse
    

posted @ 2025-05-21 22:24  tomorgen  阅读(19)  评论(0)    收藏  举报