Python切片多个输出

2024-09-30 06:16:11 发布

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

我正在做一个项目,我正在做一个命令行来学习如何在Python中使用诅咒。我开始为命令的解释器工作,但是有一种情况我想看看是否有更好的解决方案。你知道吗

我想将字符串输入拆分为命令和参数。下面是一个我如何做到这一点的例子:

def processor(inputText):
    command, arguments=inputText.split(' ')[0], inputText.split(' ')[1:]

我可以这样做,但因为我挑剔/古怪,我不喜欢有inputText.split(' ')两次。我可以选择另一个选项来缩短它:

def processor(inputText):
    inputTextSplit=inputText.split(' ')
    command, arguments=inputTextSplit[0], inputTextSplit[1:]

因为我们正在缩短代码,inputTextSplit更长,所以用i替换它可能会更好:

def processor(inputText):
    i=inputText.split(' ')
    command, arguments=i[0], i[1:]

不过,我的问题是,使用较短的变量(如i)可能会导致以后覆盖其他变量(如在for循环(如for i in array:)中使用i)。这将使代码看起来更干净,但同时如果不小心可能会导致问题。你知道吗

有没有一种方法可以将数组的拆分部分转换为变量?例如,在TI Basic中,可以传递一个列表作为操作的参数。要在TI Basic中获得图形函数的多个输出,如下所示:

"If Y₁ is 2x, then the results would be as follows:"
Y₁({1, 3})
"{2, 6}"
{Y₁(1), Y₁(3)}
"{2, 6}"

有没有类似的方法来做这样的假设:

def processor(inputText):
    command, arguments=inputText.split(' ')[[0,1:]]

是否有一些先进的Python技术可以实现这一点,或者只是一个懒惰的想法?像'command arg1 arg2'这样的输入的预期结果是['command', ['arg1', 'arg2']]。你知道吗

我也不想把这个概念局限于我的项目示例。另一个例子是array[[0,1:6,7:8,9:]],它将给出另一个具有4个值的数组,这是原始数组的一部分。你知道吗

另外,我使用的是python2.7。提前谢谢你的建议。你知道吗


Tags: 项目代码命令for参数def数组processor
1条回答
网友
1楼 · 发布于 2024-09-30 06:16:11

您可以简单地执行以下操作:

def processor(inputText):
    command, *arguments = inputText.split(' ')
    return command, arguments

print(processor('command arg1 arg2 arg3'))
# ('command', ['arg1', 'arg2', 'arg3'])

使用*argumentssplit生成的列表的所有剩余部分分配给command后的arguments列表。你知道吗

您可以查看PEP 3132 Extended Iterable Unpacking以了解有关此语法的详细信息。你知道吗

相关问题 更多 >

    热门问题