2012-12-15 81 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的最終項目之一 - 參見[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