2013-01-24 2 views
-1

방금 ​​프로그래밍하는 법을 배우기 시작했으며 Python을 사용하여 숙제를 할 때 다음과 같은 문제가 발생했습니다. 누구든지 내가해야 할 일을 설명 할 수 있는지 궁금합니다.목록을 파이썬을 사용하여 두 개로 나눕니 까?

축구 선수 목록을 두 그룹으로 나눠주는 함수 파티션()을 구현하십시오.

Eleanor 

Evelyn 

Gavin 
:보다 상세하게는, 먼저 이름

partition([‘Eleanor’, ‘Evelyn’, ‘Sammy’, ‘Owen’, ‘Gavin’]) 

출력 A와 M. 포함 간의 문자 및 시작 해당 축구 선수의 이름을 입력으로서 제 이름 (문자열)의리스트를 취하고 인쇄

partition([‘Xena’, ‘Sammy’, ‘Owen’]) 

아무것도 인쇄되지 않습니다.

+3

지금까지 무엇을 얻었습니까? 너 무슨 문제있어? – NPE

답변

2

이 같은 뭔가를 찾고 될 수있는 정확한 문제 정의에 따라 이러한 엄격하게 'A'와 'M'사이에있는 아스키 문자와 일치하는지

def partition(l): 
    return [firstname for firstname in l 
      if firstname[0].lower() in 'abcdefghijklm'] 

def partition2(l): 
    return [firstname for firstname in l 
      if 'a' <= ord(firstname[0].lower()) 
       and ord(firstname[0].lower()) <= 'm'] 

참고.

+0

나는 파티션에 매개 변수로'abcdefghijklm'을 전달할 것이다. –

+0

글쎄, 그래. 그리고 달의 지표와 위상은 어떻습니까? –

+0

응? 의견은 질문을 게시 한 개인에게 더 많은 것이 었습니다. 그들은 그들이 단지 그렇게 시작되지 않았다고 언급했기 때문에 그들에게 그렇게 명백하지 않을 수도 있습니다. 단일 함수가 더 나을 때 partitionAtoM() 및 partitionNtoZ()라는 두 가지 함수를 쉽게 볼 수 있습니다. –

0

이 경우 사용자 파티션이 없습니다. 다음보십시오 :

 
import re 
players = ['Eleanor', 'Evelyn', 'Sammy', 'Owen', 'Gavin'] 
am_players = filter(lambda p: re.match('^[A-M].*',p,re.I), players) 
nz_players = filter(lambda p: re.match('^[N-Z].*',p,re.I), players) 
+0

이것이 제가 생각했던 방식이라고 생각합니다. 그러나 포스터가 언급 한 이후로 그들은 단지 프로그래밍을 시작하기 만 했으므로 lamda 및 정규 표현식을 도입하는 것이 너무 많은 것 같다고 생각합니다. –

0

'M'에서 'A'부터 문자로 시작 파티션 기능 인쇄 이름 만 다음 partition(['Xena', 'Sammy', 'Owen']) 인쇄되지 않으면 아무것도.

출력이 비어있는 이유입니다.

관련 문제