我想切片:但是我们还没有学会它

时间:2013-04-08 13:56:09

标签: python-2.7

我想尝试两个随机的整数,然后将相应的编号的东西从列表中切出来,但是我不确定我应该做什么。它说[r1:r2]中的冒号不正确。

from random import* 

#2

z=['cats','dogs','soccer','weather','whale','tennis']

def slicer(ls):
    r1=randrange(0,5)
    r2=randrange(0,5)
    for x in ls:
        [r1:r2]
    return('The slice from '+str(r1)+' to '+str(r2)+' is: ' + ls)

print(slicer(z))

3 个答案:

答案 0 :(得分:1)

你正试图切片。 [r1:r2]是无效的python语法。

我认为你想做的事情是:

sliced = ls[r1:r2] 

但即使这样也不太可能做你想要的,因为切片中的第二个数字需要更高。

对你似乎想做的事情采取更正确的方法(但我不是一个思想领袖)

r1 = randrange(0,len(ls)-1)
r2 = randrange(0,len(ls)-r1-1) #Number of items to slice, -1
slice = ls[r1:r1+r2]

这将返回列表的子部分,至少1个项目

答案 1 :(得分:0)

那是因为为了切片,你需要一个列表(或类似对象的序列)来获取切片。

你可能想做的只是return ls[r1:r2]

答案 2 :(得分:0)

我想我明白了

from random import* 

z=['cats','dogs','soccer','weather','whale','tennis']

def slicer(ls):
    r1=randrange(0,5)
    r2=randrange(0,5)

    if (r1<r2):
        return('The slice from '+str(r1)+' to '+str(r2)+' is: ' + str(ls[r1:r2]))
    else:
        return('The slice from '+str(r2)+' to '+str(r1)+' is: ' + str(ls[r2:r1]))
print(slicer(z))