2012-12-15 2 views
1

고유 원소 결정 : 화학 종 목록이 주어지면 은 종 세트에 포함 된 고유 원소의 알파벳순 목록을 반환하는 함수를 작성하십시오. 이전 단계의 파서를 사용하십시오. 예 : 의 입력하여 함수를 호출 [ 'CO', "H2O", "CO2하는 ','CH4는 '] ['C ','H ', 'O ']화학 종 고유 원소 찾기

의 출력을 돌려 이것은 제가하고있는 더 큰 프로젝트의 일부입니다.

내가 겪고있는 문제는 각 요소의 개별 문자를 보는 방법입니다. 이걸 가지고 나면 고유한지 아닌지를 확인할 수 있어야합니다. 나는 이것이 옳지 않다는 것을 안다. 나는 생각하고있는 것의 단지 거친 생각이다.

def unique_elements(x): 

    if x in y 

    else 
    y.append(x) 
return y 
+0

문제는 이미 개별 분자 파서를 가지고 있음을 암시하는 것 같다. 아마 당신은 당신이 주어진 목록의 각 항목에 대해 그것을 호출하고 결과를 결합하고 싶을 것입니다. 정확히 당신이 문제를 겪고 있다고 말하는 질문을 명확히 할 수 있습니까? – Blckknght

+0

Erdmann 교수가 준'chem_compound_parser' 예제에서와 같이'pyparsing'을 사용하고 있습니까? (맥락에 관심이있는 분은 애리조나 주에있는 MSE 350의 최종 프로젝트 중 하나 일 것입니다. [here] (http://erg.mse.arizona.edu/mse350/_downloads/balancing_chemical_reactions.pdf)를 참조하십시오. 전체 설명. 코스 등급의 30 % 인 FWIW입니다.) – DSM

답변

2
>>> def sanitize(compound): 
    return compound.translate(None,string.digits) 

>>> def elementazie(compoud): 
    return re.findall("([A-Z][a-z]*)",compoud) 

>>> sorted(set(chain(*(elementazie(sanitize(s)) for s in species)))) 
['Au', 'C', 'H', 'O'] 
+0

+1, 좋은 대답 : – RocketDonkey

+0

@RocketDonkey : 정렬 된 부분을 놓쳤습니다. 이제 업데이트되었습니다. – Abhijit