내가 목록을 가지고 분리 문자 conditionaly 주신 의해 부분으로 목록을 분할하고 나는 다음과 같은 차이점이 문자열에 대한 str.split()
작품처럼 moslty 부분으로 분할 할 :파이썬 방법은
-
. 목록의 요소에 대해 술어가
- 결과 목록에 delimeter를 유지하고 싶습니다. 예를 들어
True
이면이 요소는 delimeter로 간주됩니다.
:
def split_by_predicate(it, predicate):
lst = []
cur = []
for element in it:
if predicate(element):
lst.append(cur)
cur = []
cur.append(element)
lst.append(cur)
return lst
하지만 파이썬은 우아하고하지 못 했습 :
split_by_predicate([0, "One", 1, 2, 3,
"Two", 4, 5, 6, 7, "Three", "Four"],
predicate=lambda x: isinstance(x, str))
나는 다음과 같은 코드를 작성할 수 있습니다 나에게
[[0], ["One", 1, 2, 3], ["Two", 4, 5, 6, 7], ["Three"], ["Four"]]
를 제공해야합니다. 비슷한 접근법이 here (발전기 사용)입니다.
this one과 같은 itertools
기반 솔루션을 알아 내려고했으나 필자의 예제처럼 delimeter가 반복 될 경우 제대로 작동하지 않습니다.
현재 코드보다 더 기능적인 스타일로 구현하는 방법이 있습니까?
'it'이 첫 번째 요소로'str'을 구성하면'[]'가 비어 있습니다. – mshsayem
@mshsayem' ', one, 1,2,3'.split (', ')'- 첫 번째 요소에 빈 문자열을줍니다. 나는 이것이 문제라고 생각하지 않는다. –