如何在Python中正确显示列表的片段

2024-10-01 11:25:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个问题,我需要给所有行分配一个字母列表,总共16个(a到p)。每行中分配的字母数等于“组数”列中的数字,并在列表中迭代(a到p)。当作业到达列表的底部时,我想重新开始

这是我的原始代码:

for i in range (len(output)):
    start = sum(output['number of gangs'][0:int(i)])
    end = sum(output['number of gangs'][0:i+1]) 
    output['gang'][i] = str(gangs[int(start) % len(gangs):int(end) % len(gangs)])
    i += 1

这是输出:

    number      time
    of gangs    and vessel   gang
0   5.0         [1, 0]      ['a', 'b', 'c', 'd', 'e']
1   5.0         [2, 0]      ['f', 'g', 'h', 'i', 'j']
2   1.0         [2, 1]      ['k']
3   2.0         [2, 2]      ['l', 'm']
4   2.0         [3, 0]      ['n', 'o']
5   1.0         [3, 1]      ['p']
6   2.0         [3, 2]      ['a', 'b']
7   1.0         [3, 3]      ['c']
8   5.0         [4, 0]      ['d', 'e', 'f', 'g', 'h']
9   1.0         [4, 1]      ['i']
10  2.0         [4, 2]      ['j', 'k']
11  2.0         [4, 3]      ['l', 'm']
12  1.0         [5, 1]      ['n']
13  2.0         [5, 2]      []
14  2.0         [5, 3]      ['a', 'b']
15  1.0         [5, 4]      ['c']
16  1.0         [6, 1]      ['d']
17  2.0         [6, 2]      ['e', 'f']
18  2.0         [6, 3]      ['g', 'h']
19  1.0         [6, 4]      ['i']
20  2.0         [6, 5]      ['j', 'k']
21  1.0         [7, 1]      ['l']
22  2.0         [7, 2]      ['m', 'n']
23  1.0         [7, 4]      ['o']
24  2.0         [7, 5]      []
25  1.0         [7, 6]      ['b']
26  1.0         [7, 7]      ['c']
27  2.0         [8, 2]      ['d', 'e']
28  2.0         [8, 5]      ['f', 'g']
29  2.0         [9, 2]      ['h', 'i']
30  4.0         [9, 8]      ['j', 'k', 'l', 'm']
31  1.0         [9, 9]      ['n']
32  4.0         [10, 8]     []
33  1.0         [10, 9]     ['c']
34  1.0         [10, 10]    ['d']
35  1.0         [11, 9]     ['e']
36  1.0         [11, 10]    ['f']
37  1.0         [12, 10]    ['g']

如您所见,当我到达列表的底部(a到p)时,相应的单元格只显示为“[]”(而不是第5行,我手动更新了该行以测试它是否工作)。从下一行开始,赋值是正确的。 我试过这个:

for i in range(len(output)):
    if i in output.gang[output.gang == '[]'].index.tolist():
        output['gang'][i] = str(gangs[int(sum(output['number of gangs'][0:int(i)])) % len(gangs):int(sum(output['number of gangs'][0:i+1])) % len(gangs)])
    else:
        break

还有这个:

for i in range (len(output)):
    if any(c.isalpha() for c in output['gang'][i]) == False:
        output['gang'][i] = str(gangs[int(sum(output['number of gangs'][0:int(i)])) % len(gangs):int(sum(output['number of gangs'][0:i+1])) % len(gangs)])
        continue
    else:
        break

还有这个:

for i in range (len(output)):
    if output['gang'] == '[]':
        output['gang'][i] = str(gangs[int(sum(output['number of gangs'][0:int(i)])) % len(gangs):int(sum(output['number of gangs'][0:i+1])) % len(gangs)])
        continue
    else:
        break

还有这个:

def update(table, column, ref, input):
    for i in range(len(table)):
        if column[i] == '[]':
            column[i] = str(input[int(sum(ref[0:int(i)])) % len(input):int(sum(ref[0:i+1])) % len(input)])
        else:
            break
    return table
update(output, output['gang'], output['number of gangs'], gangs)

什么都不管用。所有这些代码不显示错误,只是不更新我的表。有人能帮我吗


Tags: ofinnumber列表foroutputlenif