이 날 늘 혼란스럽다. 이 괜찮게 될 것 같다.
my_list = ["Hello", "world"]
print(my_list.join("-"))
# Produce: "Hello-world"
이 보다.
my_list = ["Hello", "world"]
print("-".join(my_list))
# Produce: "Hello-world"
마치 이 구체적인 이유를 있나요?
이는 설명한 [구체화하십시오 방법. 마지막으로] [1] 에서 개발되었으며, 스레드할 파이썬 개발 아키베 수락됨 귀도. 이 스레드할 지난 6월 1999년 발매된 '및' 스트리요린 파이썬 1.6 에서 9월 2000년 (및 지원 유니코드) 에 포함되어 있다. 파이썬 2.0 (지원 '등' 참가하십시오 str '방법') 에서 10월 2000년 발매되었다.
여기서는 몇 가지 추가 생각을 (내, 내 friend& # 39 의):
재밌는 것 같지 않지만, >, 오른쪽! 배리, go for it.
[1]: http://mail.python.org/pipermail/python-dev/1999-June/095366.html ", 구체화하십시오 방법. finally". [2]: 역사적 mail" http://mail.python.org/pipermail/python-dev/1999-june/095436.html ";
Join () '때문에' () 은 list 클래스 string 클래스에 방법 대신?
I agree 웃기는구만 보입니다
(Http://www.faqs.org/docs/diveintopython/odbchelper_join.html) 참조.
>. 배운 역사적 note. 때 처음엔 >. 파이썬, 제가 걱정했던것 bigadmin 스크램블된 메서드입니다 >. 이는 다시그것들을 시행하십시오 목록 >. 구분 인수로. 많은 >. 피부로 느끼는 것과 같은 방식으로, 거기에 의 >. 뒤의 이야기를 참가하십시오 메서드입니다. 전에 >. 파이썬 1.6 을 가지고 있지 않아서, 문장열 모든 >. 이러한 유용한 방법입니다. There was a >. 별도의 구체화하십시오 모듈에서는 v2.03-00 있는 >. 모든 문자열 함수. 각 >. 첫 행동으로 문자열으로 함수은 있었다. >. 인수. 이 기능을 할 것으로 >. 둘 만큼 중요한 드래그합니다 >. 스스로 감지에서 문장열 만들었는데, >. 같은 기능을 위해, 그리고 낮은 쇱そ >. 분리-정합성. 그러나 많은 파이썬 하드코어 >. 프로그래머는 새로운 것을 참가하십시오 >. 메서드입니다 주장까지 합니다 >. 대신, 또는 그 목록의 방법 >. 전혀 안 움직이십시오 임상의들의 아니라 단지 >. (이 부분은 이전 구체화하십시오 모듈에서는 >. 아직 많은 유용한 물건을 항목이없습니다). >. 내가 사용하는 방법, 새로운 참가하십시오 독점 >. 그러나 작성된 코드를 인컨텍스트 알 수 있습니다. >. 당신은 정말 귀찮게 아웃하기로 way, >. 이전 스테링스타인 기능을 사용할 수 있습니다. >. 대신.
>. - Mark 필그림, 파이썬 다루기
I agree it& 있는 # 39 의 어긋 처음에는 there& # 39 의 좋은 이유. # 39 의 참가하십시오 can&, t be 메서드입니다 바뀌엇어요 이유:
실제로 참가하십시오 두 가지 방법 (파이썬 3.0):
>>> b"".join
<built-in method join of bytes object at 0x00A46800>
>>> "".join
<built-in method join of str object at 0x00A28D40>
그런 경우 모함이야 참가하십시오 바뀌엇어요 방법 중 하나를 결정할 수 있도록 할 것이라고 호출하십시오 인수만 검사합니다. # 39, t 와 함께 can& 진실이며당신이 참가하십시오 바이트입니다 str 도왔으매 방식으로 할꺼이나 이제 이해가 됩니다.
>. # 왜 그렇게 '스테링스타인 (목록)' 대신 '리스트스타인 (string)'?
',' 은 " string" 참가하십시오 때문이다. 방법! 이 중에서 문자열으로 창출합니다 이트레이블. 만약 우리가 할 수 있도록 하는 방법을 열거합니다 이트라블레스 aren& 열거합니다, t # 39 의 때 우리는, 뭐 어때?
어떤 경우에는 튜플 문자열? 만약 이 가운데 '목록' 나라를 위해 모든 방법을 같은 문자열 반복자가 했습니다 '목록' 에 합류할 수 있을 때 전에 요소를 하나의 문자열! 예를 들면 다음과 같습니다.
some_strings = ('foo', 'bar', 'baz')
class OurList(list):
def join(self, s):
return s.join(self)
바로 사용할 수 있으며, 참고 할 수 있는 1 명씩 모두 소모하고, 문자열의 목록 작성 이트레이블 참가하십시오 이트레이블 메모리이고 처리력:
>>> l = OurList(some_strings) # step 1, create our list
>>> l.join(', ') # step 2, use our list join method!
'foo, bar, baz'
그래서 우리가 지켜보리니 에서 추가 단계를 우리는 우리의 목록을 사용하는 방법을 사용할 수 있는 게 아니라 내장 구체화하십시오 방법:
>>> ' | '.join(some_strings) # a single step!
'foo | bar | baz'
이 알고리즘은 만들 수 있는 '실제로' 는 파이썬 /dev/raw/raw1 최종 문자열이어야 스트리요린 이트레이블 통과할 수 있으며, 이를 통해 두 번 도왔으매 제공할 경우 이를 구체화하기 위해 발생기입니다 표현식에서는 바뀌엇어요 전에 먼저 만들 수 있는 마지막 구체화하십시오.
따라서, 발전기, '보다' 는 보통 통과하는 동안 수립하였습니다 지능형 나열하십시오 스트리요린 예외:
>>> import timeit
>>> min(timeit.repeat(lambda: ''.join(str(i) for i in range(10) if i)))
3.839168446022086
>>> min(timeit.repeat(lambda: ''.join([str(i) for i in range(10) if i])))
3.339879313018173
그럼에도 불구하고 여전히 '의미' 작업을 한 스트리요린 " string"; 그래서 아직 작업을 이해할 수 있는 '기타' 에 비해 이트라블레스 객체에는 할꺼이나 str.
자연 직각 작업을 분할하려면 생각하면 됩니다.
그래서 내가 이해하는 것이 왜 아무것도 이트레이블 can& 쉽게 구현될 수 있는 t # 39, 그냥 목록.
쉽게 구별할 수 있도록 I&; d # 39 와 같은 언어로, 하지만 나는 그것을 볼 수 있는 실현 가능한 경우 don& # 39 명이 실제로 그런 것 같지는 않다 - 이트라빌레티 인터페이스입니다 추가할 수 있습니다, 하지만 그래서 there& 인터페이스입니다 이것이 단순한 규칙 집합에 대한 중앙 추가하는 방법 # 39 이 셨으며 이트레이블 있는 게 전혀 없다.
'-' 의 " 스타인 "; - (my_list) 로 변환 가입을 하는 요소를 바뀌엇어요 문자열으로 선언합니다. # 39 의 it& 결과 지향 (메모리이고 그냥 쉽게 이해).
I make a 의 전체 컨닝 지 methods_of_string 단축시킵니다 참조입니다.
string_methonds_44 = {
'convert': ['join','split', 'rsplit','splitlines', 'partition', 'rpartition'],
'edit': ['replace', 'lstrip', 'rstrip', 'strip'],
'search': ['endswith', 'startswith', 'count', 'index', 'find','rindex', 'rfind',],
'condition': ['isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isnumeric','isidentifier',
'islower','istitle', 'isupper','isprintable', 'isspace', ],
'text': ['lower', 'upper', 'capitalize', 'title', 'swapcase',
'center', 'ljust', 'rjust', 'zfill', 'expandtabs','casefold'],
'encode': ['translate', 'maketrans', 'encode'],
'format': ['format', 'format_map']}
모두 잘 못하나.
(x, 구분하는) 지켜보고 있다는 스테링스타인 구체화하십시오 모듈에서는 존재에 대한 자격 미달이라구요 vmnet 때문에 그동안 바뀌엇어요 구체화하십시오 모듈에서만 수행됨 써줬지
이 목록은 수 있다는 것을 잘 알고 있는 경우 파이썬 런타임용으로 개발하십시오 컴파일러와의 내장 모듈에서는 동적임 건너뛰십시오 하는 반면, 그렇지 않으면 직접 조회 및 인코딩합니다 바이트코드를 동적으로 의도 꽂으십시오 " 해결하십시오 join"; 올라갈 수 있는 여러 계층의 상속,) 의 " a" 호출당 (이후 사이에 페이징됩니다 의미를 가질 수 있기 때문에, 참가하십시오 변경일 파이썬 는 동적 언어).
안타깝게도 이 는 최상의 추상화 흠이다. 아무리 생각해도 추상화 관점에서 문제를 선택하는 너회의 추상화 그칠 you& # 39, 쉽게 이해할 수 있으며 이런 문제를 해결하려고 하고, 일관된 추상화를 귀의하지않는다고 doesn& 될 수 있습니다 t # 39, 기본 이념 없이 모두 함께 접합 어울리지 않는 시작 때 그들을 랩할 보기입니다 일관성입니까 수 있는 것을 당부했습니다. # 39 의 보다 유연한 접근 방식은 이후 이 vmnet python& it& # 39, s, s # 39 더 많은 돈을 지불할 수 있도록 최대 it& 저렴하고,, 래퍼, 또는 자신의 인컨텍스트 여바바 " nicer" 만들어 자신만의 방법이다.