我正在嘗試創建一個 for 回圈,在轉到下一個索引之前迭代每個索引兩次,例如,如果我有以下串列:
l = [1,2,3]
如果是這樣,我想迭代它:
l = [1,1,2,2,3,3]
有人可以幫我解決這個問題嗎?
uj5u.com熱心網友回復:
最明顯的事情是生成器函式,它生成迭代中的每個專案兩次:
def twice(arr):
for val in arr:
yield val
yield val
for x in twice([1, 2, 3]):
print(x)
如果你需要一份清單,那么
l = list(twice([1, 2, 3]))
uj5u.com熱心網友回復:
您可以制作一個重復元素并展平結果的串列理解:
l = [1,2,3]
repeat = 2
[n for i in l for n in [i]*repeat]
# [1, 1, 2, 2, 3, 3]
uj5u.com熱心網友回復:
您可以使用 NumPy 解決此問題。
import numpy as np
l = np.repeat([1,2,3],2)
重復將陣列的元素重復指定的次數。這也回傳一個 NumPy 陣列。如果您愿意,可以將其轉換回串列list(l)。但是,NumPy 陣列的行為類似于串列,因此大多數時候您不需要更改任何內容。
uj5u.com熱心網友回復:
不出所料,more-itertools具有:
>>> from more_itertools import repeat_each
>>> for x in repeat_each([1, 2, 3]):
... print(x)
...
1
1
2
2
3
3
(它還有一個可選的第二個引數,用于告訴它重復的頻率。例如repeat_each([1, 2, 3], 5)。默認值為 2。)
uj5u.com熱心網友回復:
l = [1, 2, 3]
lst = []
for x in l:
for i in range(2):
lst.append(x)
print(lst)
# [1, 1, 2, 2, 3, 3]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480955.html
上一篇:有沒有辦法在R中回圈復制值?
下一篇:如何使用我的條件創建回圈
