【原创】从 列表的重复 到 用sum展开二层嵌套列表将子元素合并
生活随笔
收集整理的這篇文章主要介紹了
【原创】从 列表的重复 到 用sum展开二层嵌套列表将子元素合并
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載請注明出處:https://www.cnblogs.com/oceanicstar/p/9517159.html
★像R語言里頭有rep函數可以讓向量的值重復,在python里面可以直接對列表用乘法讓列表進行重復 注:這里生成的重復列表是個新列表(我們可以打印id查看一下) a = [1,2] b = a * 3 a Out[1]: [1, 2] b Out[2]: [1, 2, 1, 2, 1, 2] id(a) Out[3]: 303757832 id(b) Out[4]: 303741000
★像R語言里頭有rep函數可以讓向量的值重復,在python里面可以直接對列表用乘法讓列表進行重復 注:這里生成的重復列表是個新列表(我們可以打印id查看一下) a = [1,2] b = a * 3 a Out[1]: [1, 2] b Out[2]: [1, 2, 1, 2, 1, 2] id(a) Out[3]: 303757832 id(b) Out[4]: 303741000
?
★將嵌套列表中的 子元素 合并,可以用sum函數,第二個參數傳入一個空列表[]即可 注意:sum函數的參數包括兩個(iterable可迭代對象,start求和的初始值),sum會把可迭代對象內的元素加在start參數傳入的初始值上。 因此,如果初始值是個列表,那么可迭代對象也必須要是個列表,且必須是嵌套列表,因為只有這個列表元素也是列表時,這些元素才能跟初始值列表相加。 我們來列舉幾個例子 # 實際在計算:[] + [1,2] + [3,4] sum([[1,2], [3,4]], []) Out[13]: [1, 2, 3, 4]# 實際在計算:[5] + [1,2] + [3,4] sum([[1,2], [3,4]], [5]) Out[14]: [5, 1, 2, 3, 4]# 實際在計算:[5,6] + [1,2] + [3,4] sum([[1,2], [3,4]], [5,6]) Out[15]: [5, 6, 1, 2, 3, 4]# 實際在計算:[[5]] + [1,2] + [3,4] sum([[1,2], [3,4]], [[5]]) Out[16]: [[5], 1, 2, 3, 4]# 實際在計算:[[5,6]] + [1,2] + [3,4] sum([[1,2], [3,4]], [[5,6]]) Out[17]: [[5, 6], 1, 2, 3, 4]?
我們會發現,這里sum函數都是在傳入的第二個參數列表基礎上,再合并了第一個參數——嵌套列表的所有子元素 ★例子:如何讓一個列表c = [1,2,3,4]中的每個元素重復指定次數(各元素重復次數按列表d=[4,1,3,2]來重復),生成一個新列表? sum([[c[i]]*d[i] for i in range(len(c))], []) Out[31]: [1, 1, 1, 1, 2, 3, 3, 3, 4, 4]# 更簡單的(利用zip進行對應位置的元素匹配,免去了使用索引) sum([[x] * y for x,y in zip(c, d)], []) Out[43]: [1, 1, 1, 1, 2, 3, 3, 3, 4, 4]?
利用的就是上面提到的: 1. 列表數據類型可以直接使用乘法來指定次數進行重復 2. sum(嵌套列表,[])可以展開二層嵌套列表并合并嵌套列表中的各子列表元素 注意:sum只能展開第一個參數中嵌套列表的最外頭2層(實際上原理已經在上面提到了,就是展開列表里面的元素加在初始值上),例如下面這個例子 # 實際在計算:[0] + [[1,2], [3,4]] + [5,6] sum([[[1,2],[3,4]],[5,6]], [0]) Out[34]: [0, [1, 2], [3, 4], 5, 6]?
?
轉載請注明出處:https://www.cnblogs.com/oceanicstar/p/9517159.html轉載于:https://www.cnblogs.com/oceanicstar/p/9517159.html
總結
以上是生活随笔為你收集整理的【原创】从 列表的重复 到 用sum展开二层嵌套列表将子元素合并的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ffmpeg下载及转码批量操作
- 下一篇: 活动选择