我正在尝试编写切片代码,获取链接列表,启动,停止,步骤。
我的代码应该与使用list[start:step:stop]
的行为相同。
当用户只插入1个参数时(我们说它是 x ),我的问题就开始了 - 然后,
x 应该进入stop
而不是start
。但是,我被告知可选
参数需要出现在所有参数的末尾。
有人能告诉我如何在第一个参数中只插入1个输入到第二个参数 一个是强制性的,但第二个不是? 顺便说一句,我不能使用内置函数
答案 0 :(得分:3)
您可以编写一个LinkedList类来定义 __ getitem __ 函数,以访问python的表示法。
class LinkedList:
# Implement the Linked ...
def __getitem__(self, slice):
start = slice.start
stop = slice.stop
step = slice.step
# Implement the function
然后你可以像你想要的那样使用LinkedList
l = LinkedList()
l[1]
l[1:10]
l[1:10:2]
答案 1 :(得分:1)
你可以尝试:
def myF(*args):
number_args = len(args)
if number_args == 1:
stop = ...
elif number_args == 2:
...
elif number_args == 3:
...
else
print "Error"
*args
表示传递给函数myF
的参数将存储在变量args
中。
答案 2 :(得分:1)
使用可选(命名)参数:
def foo(start, stop=None, step=1):
if stop == None:
start, stop = 0, start
#rest of the code goes here
然后是foo(5) == foo(0,5,1)
,但foo(1,5) == foo(1,5,1)
。无论如何,我觉得这很有用...... :)
答案 3 :(得分:0)
def func(arg1=None, arg2=None, arg3=None):
if not arg1:
print 'arg1 is mandatory'
return False
## do your stuff here
arg1 = 1
arg2 = 4
arg3 = 1
## works fine
func(arg1=arg1, arg2=arg2, arg3=arg3)
## Evaluated as False, Since the first argument is missing
func(arg2=arg2, arg3=arg3)