mar*_*r51 0 python loops python-3.x
试图计算机器周期.我需要帮助用一些Python代码填充ID列.谢谢你的帮助.
每次循环重新开始时,我希望ID代表从1到N的新循环.
Cycle ID
1 1
2 1
… 1
35 1
1 2
2 2
… 2
457 2
1 3
2 3
… 3
128 3
Run Code Online (Sandbox Code Playgroud)
只是为了好玩,这是一个不可读的嵌套列表理解/生成器表达式.:)
from itertools import groupby
cycle = [1, 2, 3, 4, 5, 6, 1, 2, 3, 1, 2, 3, 4]
a = [(v, i) for i, u in enumerate(([t[1] for t in g]
for _, g in groupby(enumerate(cycle), lambda t:t[1]-t[0])), 1) for v in u]
print(a)
for t in zip(*a):
print([*t])
Run Code Online (Sandbox Code Playgroud)
产量
[(1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1), (1, 2), (2, 2), (3, 2), (1, 3), (2, 3), (3, 3), (4, 3)]
[1, 2, 3, 4, 5, 6, 1, 2, 3, 1, 2, 3, 4]
[1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)
只要数字序列中断,此代码将转到一个新的ID号cycle,新的子序列不必重新启动为1.
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |