2016-11-30 2 views
0

그래서 나는 indeces 변수를 사용하여 배열 조각을 얻으려고하지만 작동하지 않습니다. 만약 내가 indeces에 하드 코드 번호를 모두 잘 작동합니다. 왜???파이썬에서 : 배열을 슬라이스하는 인덱스로 변수가 작동하지 않습니다

내 코드 :

def play(startplay,stopplay): 


    Y = x[startplay:startplay+5] 
    # produces an empty list... 

    Y = x[1:5] 
    # produces the correct list 
+3

우선,'startplay'가'1'이면'Y = x [1 : 6]'not,'[1 ​​: 5]'입니다. –

+4

음, x가 정의되지 않았습니다 ... 오류가 무엇입니까? 제발 "작동하지 않는다"고 말하지 마시오. 그게 무슨 뜻인지 우리가 어떻게 알았습니까? –

+0

또한'x','startplay' 및'stopplay'가 무엇인지 알지 못하므로 사용하고있는 샘플 값을 게시하여 문제를 재현 할 수 있도록하십시오. –

답변

1

startplay의 가치는 무엇입니까? list (또는 음수이지만 0에 가까울 정도로 startplay+5 >= 0)보다 길면 슬라이스 할 때 list이 비어있을 것으로 예상됩니다.

>>> test = [1, 2, 3] 
>>> test[-5:0] # Can't slice from negative to non-negative with implicit step of 1 
[] 
>>> test[-6:-1] 
[1, 2] 

의견에서 언급했듯이 어쨌든 예제가 일치하지 않습니다. x[startplay:startplay+5]은 길이가 5 인 슬라이스입니다. x[1:5]은 길이가 4 인 슬라이스입니다.

0

임. 여기에 ShadowRanger가 있습니다. 작업이 작동해야하고 아래에서 만든 예제에서 작동하는지 확인합니다.

def trial(x1, x2): 
    array = [1,2,2,3,4,5,6,6,3,2,2,1,1,23,3,4,5,2,3,2,] 
    new_array = array[int(x1):int(x2)] 
    new_array2 = array[x1:x2] 
    print(new_array2) 
    print(new_array) 
trial(1, 3) 
[2, 2] 
[2, 2] 

는 ... 목록 처음으로 작동 할 수 있는지 확인 하드 예로부터 구축 및 documentation를 참조합니다.

+0

적어도 내 문제를 복제 해 주셔서 감사합니다. 당신은 원래 배열의 범위를 벗어나는 변수를 전달하고있었습니다. 멍청한 질문이지만 다시 한 번 당신의 답변에 감사드립니다. – user6710871

+0

문제가되지 않습니다.] –

+0

답변이 유효하다고 여겨지면 적절한 투표 및 위약 투표를 제공해야합니다. 당신이 '벙어리'라는 질문을 모두 함께 생각한다면 그것을 제거해야합니다. –

관련 문제