在生成器或其他解决方案中递增计数

2024-10-05 22:03:45 发布

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

我试图通过获取一堆条目小部件的内容来创建一个2D列表,但是我不知道如何创建列表。你知道吗

我试着像发电机一样

hwklist = [[student, entries[i].get()] for student in student_group_list]

但是为了让它工作,我需要增加i来区分不同的条目小部件,因为entries是所有这些小部件的列表,我不知道如何使用生成器来实现这一点。你知道吗

下面,您可以看到我摆脱生成器的解决方案,但是现在列表每次迭代都会被覆盖。我想让它继续附加。你知道吗

学生小组名单的一个例子是: student_group_list = ['BERRY-SMITH Finlay', 'EDWARDS Elizabeth', 'GREGORY Isabella', 'Hendley-Jones Annabel', 'LIS Natalia', 'MANNING Sophie', 'RATCLIFFE George', 'BELLAMY Jacob', 'BOUGHTON Grace', 'GARNETT Archie', 'Maruta Kudzai', 'DAVELIS Alexander', 'DENMAN David', 'JENKIN Jonathan', 'LISTER Thomas', 'CLOWES Edward', 'OGG Holly', 'PUGH Billy']

如果您需要创建输入框字段,这应该可以让您了解我使用的是什么:

root = Tk()
entries = []
for f in range (len(student_group_list)
    markentry = Entry(root)
    entries.append(markentry)
    markentry.pack()
    but = Button(root, command = lambda: 2dlist(entries))
    but.pack()

我的当前代码:

def 2dlist(entries):
    i = 0
    for student in student_group_list:
       hwklist = [[student, entries[i].get()]]
       i = i + 1
    print (hwklist)

输出应该如下所示: [['BERRY-SMITH Finlay', '3'], ['EDWARDS Elizabeth', '5'], ['GREGORY Isabella', '6'], ['Hendley-Jones Annabel', '1'], ['LIS Natalia', '7'], ['MANNING Sophie', '3'], ['RATCLIFFE George', '8'], ['BELLAMY Jacob', '7']]...依此类推,这取决于用户在条目小部件中输入的内容。你知道吗

现在我只得到[['PUGH Billy', '7']],因为它是列表中的最后一项。你知道吗


Tags: in内容列表forget部件group条目
2条回答

2dlist函数正在为循环的每次执行使用一个新的、独立创建的列表来覆盖hwklist。如果希望函数维护运行列表,则只需定义变量一次:

def 2dlist(entries):
    i = 0
    hwklist = []
    for student in student_group_list:
       hwklist.append([student, entries[i].get()])
       i = i + 1
    print (hwklist)

你可以用zip来理解。你知道吗

hwklist = [[student, entry.get()] for student, entry in zip(student_group_list, entries)]

或者如果必须使用切片表示法,请使用enumerate

hwklist = [[student, entries[i].get()] for i, student in enumerate(student_group_list)]

相关问题 更多 >