我需要幫助在 python 中使用不同的技術從串列中提取資料
例如:我們有一個包含 20 個不同值的串列。
lst = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','w']
mod = 5
roundMod= 3
期望的輸出
Round 1 :
1 - a,
2 - b,
3 - c,
4 - d,
5 - e,
Round 2 :
1 - a,
2 - b,
3 - c,
4 - d,
5 - e,
Round 3 :
1 - a,
2 - b,
3 - c,
4 - d,
5 - e,
Round 1:
6 - f,
7 - g,
8 - h,
9 - i,
10 - j,
Round 2 :
6 - f,
7 - g,
8 - h,
9 - i,
10 - j,
Round 3 :
6 - f,
7 - g,
8 - h,
9 - i,
10 - j,
在獲得下一個 5 個元素之前,我有一個 mod 可以為每一輪獲得最大 5 個值,而 roundmod 為最大輪次
uj5u.com熱心網友回復:
IIUC,你想用逐步的起點/終點對串列進行切片。//為此使用整數除法 ( ):
List = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','w']
mod = 5
roundMod= 3
for i in range(6): # not sure how the number of "lines" is defined
d = i//roundMod
print(f'{i=}, {d=},', List[d*mod:(d 1)*mod])
輸出:
i=0, d=0, ['a', 'b', 'c', 'd', 'e']
i=1, d=0, ['a', 'b', 'c', 'd', 'e']
i=2, d=0, ['a', 'b', 'c', 'd', 'e']
i=3, d=1, ['f', 'g', 'h', 'i', 'j']
i=4, d=1, ['f', 'g', 'h', 'i', 'j']
i=5, d=1, ['f', 'g', 'h', 'i', 'j']
如果您還想跟蹤回合,請使用divmod:
List = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','w']
mod = 5
roundMod= 3
for i in range(6):
d,r = divmod(i, roundMod)
print(f'Round {r 1}: ', List[d*mod:(d 1)*mod])
輸出:
Round 1: ['a', 'b', 'c', 'd', 'e']
Round 2: ['a', 'b', 'c', 'd', 'e']
Round 3: ['a', 'b', 'c', 'd', 'e']
Round 1: ['f', 'g', 'h', 'i', 'j']
Round 2: ['f', 'g', 'h', 'i', 'j']
Round 3: ['f', 'g', 'h', 'i', 'j']
uj5u.com熱心網友回復:
這似乎是生成器的作業:
def pull(lst, mod = 5, round_mod = 3):
counter = 0
while True:
start = counter // round_mod
if start * mod >= len(lst):
break
yield lst[start * mod:(start 1)*mod]
counter = 1
puller = pull(l)
print([x for x in puller])
輸出
[['a', 'b', 'c', 'd', 'e'], ['a', 'b', 'c', 'd', 'e'], ['a', 'b', 'c', 'd', 'e'], ['f', 'g', 'h', 'i', 'j'], ['f', 'g', 'h', 'i', 'j'], ['f', 'g', 'h', 'i', 'j'], ['k', 'l', 'm', 'n', 'o'], ['k', 'l', 'm', 'n', 'o'], ['k', 'l', 'm', 'n', 'o'], ['p', 'r', 's', 't', 'w'], ['p', 'r', 's', 't', 'w'], ['p', 'r', 's', 't', 'w']]
或者,準確地重現您想要的輸出:
for n, x in enumerate(puller):
print(f'Round {n 1}: {", ".join([f"{i 1} - {v}" for i, v in enumerate(x)])}')
輸出
Round 1: 1 - a, 2 - b, 3 - c, 4 - d, 5 - e
Round 2: 1 - a, 2 - b, 3 - c, 4 - d, 5 - e
Round 3: 1 - a, 2 - b, 3 - c, 4 - d, 5 - e
Round 4: 1 - f, 2 - g, 3 - h, 4 - i, 5 - j
Round 5: 1 - f, 2 - g, 3 - h, 4 - i, 5 - j
Round 6: 1 - f, 2 - g, 3 - h, 4 - i, 5 - j
Round 7: 1 - k, 2 - l, 3 - m, 4 - n, 5 - o
Round 8: 1 - k, 2 - l, 3 - m, 4 - n, 5 - o
Round 9: 1 - k, 2 - l, 3 - m, 4 - n, 5 - o
Round 10: 1 - p, 2 - r, 3 - s, 4 - t, 5 - w
Round 11: 1 - p, 2 - r, 3 - s, 4 - t, 5 - w
Round 12: 1 - p, 2 - r, 3 - s, 4 - t, 5 - w
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/400804.html
上一篇:關于位計數的查詢(Python)
下一篇:在for回圈中僅乘以奇數索引
