0
我想要生成一個列表來索引座標(x,y和z),給定一組原子索引。我的問題是很簡單,如何優雅地從這個名單去:使用列表理解或映射從現有列表創建更大列表()
atom_indices = [0, 4, 5, 8]
這個名單:
coord_indices = [0, 1, 2, 12, 13, 14, 15, 16, 17, 24, 25, 26]
最簡單的讀/理解這樣做到目前爲止,我想到的方法是根本:
coord_indices = []
for atom in atom_indices:
coord_indices += [3 * atom,
3 * atom + 1,
3 * atom + 2]
但是,這似乎不是Pythonic。如果沒有得到列表或元組列表,有沒有更好的方法?
我相信列表推導可以更快,因爲它們被推到c代碼。 http://www.python.org/doc/essays/list2str.html – James
@DSM感謝您的回答,您的評論是有效的。不過,我認爲在這種情況下,人們會非常清楚地知道3 * a + k部分發生了什麼。 –
@Imagine:雖然好處通常很小。如果你實際上做的很貴,它會支配循環成本,或者你應該使用其他類似'numpy'的東西。如果開始時不昂貴,那麼這不值得擔心。 [順便說一句,我認爲你有錯誤的鏈接。] – DSM