You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python列表转字符串优化:命令行参数分行打印的简洁实现

优化命令行参数分组打印的简洁实现

我已经有一个能运行的解决方案,但代码写得非常粗糙。这类列表转字符串的操作我一直做得不太好,这次的实现尤其拙劣,实在尴尬。现在想找个更简洁的方案,把命令行里的每个选项参数及其对应的参数分行打印。

输入示例:

python3 -O myscript.py --dates "2024-04-30" "2024-04-29" "2024-04-28" "2024-04-27" --names "johnson" "woody" "richard" "willy" -o "/home/stamos/pickle/pics/name_brainstorming"

现有代码:

sys.argv[1:] = parameter_set
print("\nGenerating parameter set: ")
parameter_set_string = ""
first_iter = True
for each in parameter_set:
    if each[0] == "-" and first_iter == False:
        print(parameter_set_string)
        parameter_set_string = each
    else: 
        if first_iter:
            parameter_set_string += each
            first_iter = False
        else:
           parameter_set_string += ' "' + each + '" '
print(parameter_set_string)

期望输出:

Generating parameter set:
--dates "2024-04-30" "2024-04-29" "2024-04-28" "2024-04-27"
--names "johnson" "woody" "richard" "willy" 
-o "/home/stamos/pickle/pics/name_brainstorming"

Generating parameter set:
--dates "2024-04-26" "2024-04-25" "2024-04-24"
--names "anaconda" "black mamba" "python" 
-o "/home/stamos/pickle/pics/name_brainstorming"

简洁实现方案

通过分组遍历的方式,把每个选项及其后续非选项参数归为一组,再格式化输出,逻辑更清晰:

print("\nGenerating parameter set: ")
groups = []
current_group = []

for param in parameter_set:
    if param.startswith("-"):
        if current_group:
            groups.append(current_group)
        current_group = [param]
    else:
        current_group.append(param)
# 处理最后一组
if current_group:
    groups.append(current_group)

# 格式化打印每组
for group in groups:
    parts = [group[0]] + [f'"{p}"' for p in group[1:]]
    print(" ".join(parts))

代码说明

  1. 分组逻辑:遇到以-开头的选项时,将当前已收集的参数组存入列表,然后新建组;非选项参数直接加入当前组。
  2. 格式化输出:每组第一个元素保留原选项名,后续参数用双引号包裹,再用空格拼接成一行打印。
  3. 边界处理:循环结束后主动存入最后一组,避免遗漏末尾参数。

这个实现去掉了冗余的状态标记,逻辑直观易懂,可读性和维护性更强,完全匹配你的输出需求。


内容的提问来源于stack exchange,提问作者john stamos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:01:15