2012-11-24 2 views
-3

파이썬에서 연속적으로 호출되는 일련의 문자열을 만드는 방법을 아는 사람이 있습니까?파이썬에서 일련의 문자열 만들기

'ABCDEF'와 유사하면 'A'를 먼저 입력 한 다음 'B'를 누른 다음 'C'등을 입력 하시겠습니까? 또는 당신은 'D'처럼, 다른 지점에서 다음 다음 'E'다음 'F'를 그들을 부를 수있는 'A'등

+0

당신이 무엇을 하려는지 명확히하십시오. 현재 의문점은 분명하지 않습니다. – phant0m

+0

혼란에 대해 죄송합니다.이 포럼을 처음 사용 ... 매번 다른 시작점이있는 일련의 문자열 (예 : 문자)을 순환하는 가장 쉬운 방법을 찾으려고합니다. 마치 'ABCDEF'와 같이 'A', 'B'등 다른 문자열을 각각 구할 수 있지만 고정 반복 루프가 있습니다. 그리고 각 반복에는 C, D, E, F와 같은 시작점이 다를 수 있지만 항상 6 개의 문자열 또는 원래만큼 반복됩니다. 나는 그것을 더 혼란스럽게 만들었다 고 생각한다 ...! –

답변

1

, 당신은 사용할 수 있습니다 이 (슬라이싱을주의 깊게 살펴을의 .index() 명령 그리고 편리한 ascii_uppercase 상수)

from itertools import islice, cycle 
from string import ascii_uppercase 

def func(start='A', length=1, source=ascii_uppercase): 
    src = list(source) 
    idx = src.index(start) 
    cyc = cycle(src[idx:] + src[:idx]) 
    return ''.join(islice(cyc, length)) 

>>> func(length=10) 
'ABCDEFGHIJ' 
>>> func(length=10, start='X') 
'XYZABCDEFG' 
>>> func() 
'A' 
>>> func(length=3) 
'ABC' 
+0

이것이 실제로 작동한다고 생각합니다! –

+0

@PavAmetvic 만약 당신이 당신 자신을 아주 쉽게 구축 할 수있을만큼 충분하다면 –

0

난 당신이 여기에 원하는 것을 확실하지 않다 :

for c in "ABCDEF": 
    print (c) 

당신에게 줄 것이다 한 번에 한 문자 씩. 또는 당신은 그것의 목록을 만들 수 있습니다 :

print(list("ABCDEF")) 

문자열은 첨자에 있습니다

a = "ABCDEF" 
print (a[1]) #B 

그래서 당신이 그런 식으로 개별 요소를 얻을 수 있습니다 ...

을 당신이를 구성하려면 순환하는 요소 3에서 시작하는 문자열 :

a = "ABCDEF" 
cycle = a[3:] + a[:3] 

그런 다음 반복되거나 subscri 될 수 있습니다. 위와 같이 pted.

0

당신은이 같은 뜻 : 시작점을 가능하게 뭔가, 길이, 말의 주위에 "회전"를

In [3]: for i in range(len(s)+1): 
    ...:  print s[i:] 
    ...: 
ABCDEF 
BCDEF 
CDEF 
DEF 
EF 
F