动态切片列表以排除中间元素

2024-09-29 21:37:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个命令列表cmds=[['ADD', '1'], ['LOAD', '5'], ['SQR'], ['ADD', '3']],我希望有选择地执行,例如(a)cmd exclused cmd[1](b)cmd exclused cmd[2]

有没有关于如何动态执行此操作的建议?因为列表长度并不总是已知的


Tags: 命令cmdadd列表load动态建议cmds
3条回答
cmds=[['ADD', '1'], ['LOAD', '5'], ['SQR'], ['ADD', '3']],

list slicing can use If you want to choose selectively ,

(a) cmd excluding cmd[1] 
print(cmds[:1] + cmds[2:)
(b) cmd excluding cmd[2]
print(cmds[:2] + cmds[3:])

您可以创建一个小助手函数,返回除要排除的命令外的所有命令:

def exclude(commands, idx):
    return commands[:idx] + commands[idx+1:]

这将返回一个列表,删除指定索引处的命令

如果要排除索引1处的命令,请这样调用:

exclude(cmds, 1)

注:此处索引以0为基础

如果有排除步骤的标准,则可以使用列表理解创建经过筛选的命令列表:

new_cmds = [cmd in cmds if 'LOAD' not in cmd]
new_cmds = [cmd in cmds if len(cmd) < 2]

相关问题 更多 >

    热门问题