假設我有列表列表理解的元素出現兩次
l = ['a', 'c', 'b']
什麼,我想就是這些元素出現兩次,一前一後的清單,讓
['a', 'a', 'c', 'c', 'b', 'b']
,我想以最可能的pythonic方式做到這一點。
我的一半解決方案做這樣的事情
[[l[i], l[i]] for i in range(len(l))]
這將產生
[['a', 'a'], ['c', 'c'], ['b', 'b']]
從這裏,我不得不解析(步行)的列表中刪除內部列表和獲得單一單子列表。
任何人都有更好的想法一次做到這一點?很顯然,像l * 2
這樣的東西無助於['a', 'c', 'b', 'a', 'c', 'b']
,我想要相鄰的相同元素。
選擇這個,因爲它似乎更優雅的一個。請注意,計時執行此操作會產生1000000個循環,最好是3:1。每個迴路49μs'與@Yousaf的回答相比,它給出了'最慢的運行比最快的運行長5.32倍。這可能意味着正在緩存中間結果。 1000000循環,最好的3:每循環1.12微秒' –
我估計使用更長的列表進行計時。三個要素非常短,時間並不重要。對於上面的代碼,我還得到了'最慢的運行時間比最快的時間長5.41倍'。 – UpSampler