2012-02-22 2 views
1

내가 문자열을 슬라이스하고 비교 한 후,리스트로 구성 요소를 삽입 (또는 인덱스 설정하거나, 또는 아무것도)하려고 그런 그동적으로 사용하여 문자열을 슬라이스 변수

입력 :

abba 

출력 : 입력 가변 길이 주어

['ab', 'ba'] 

.

그래서 나는

list = [longwordleftslice] 
    list2 = [longwordrightslice] 

    list2 = list2[::-1 ] ## reverse slice 
    listoverall = list + list2 

그러나, 내장 된 조각 명령 [:i]i이 정수가되도록 지정

word = raw_input("Input word" 
slicelength = len(word)/2 
longword[:slicelength] 

되도록 문자열을 슬라이스합니다.

어떻게해야합니까?

답변

1

당신은 항상 그렇게 할 수 ...

word = "spamspamspam" 
first_half = word[:len(word)//2] 
second_half = word[len(word)//2:] 

을 문자열 s 및 정수 i를 들어, s == s[:i] + [:i]은 불변이다. len(word)이 홀수 인 경우 첫 번째 문자보다 두 번째 "반"문자가 하나 더 생깁니다.

파이썬 3을 사용하는 경우 raw_input과 반대로 input을 사용하십시오.

+0

파이썬 3에서 'raw_input' 문제를 잡기 위해 +1 – senderle

1

저는 파이썬 3을 사용하고 있다고 생각합니다. / 대신 //을 사용하십시오. Python 3에서 /은 항상 float을 반환합니다. //은 int를 반환하고 소수점 이하의 모든 것을 잘라냅니다.

그럼 중간 점 전후에 조각 만하면됩니다.

>>> a = [0, 1, 2, 3, 4] 
>>> midpoint = len(a) // 2 
>>> a[:midpoint] 
[0, 1] 
>>> a[midpoint:] 
[2, 3, 4] 
+0

환상적입니다. 감사합니다. –

+1

이것이 내 첫 번째 추측 이었지만 그때 그들은'raw_input' 권리를 사용하지 않았을 것입니다.? – wim

+0

@wim, 그건 사실입니다. 그러나 다행히도'//'는 어느 경우에도 작동합니다. 어쨌든 나는 OP가 왜 진실 분할이 아닌 위의 코드에서'TypeError'를 얻는 지 이유를 상상할 수 없다. – senderle

관련 문제