PYTHON-在循环中创建多个列表

2024-05-12 19:19:19 发布

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

我想在我的大学里做一个程序设计项目,但是我卡住了。我已经介绍了“数学”部分,但是我需要Python中列表和循环的帮助。

我正在处理图表,让我举一个例子,让它更清楚: 3 node graph

如你所见,我有3个节点和2个边,没什么特别的。我需要计算每对节点之间最近的路由,我已经讨论过了。现在我需要把它放入n列表中,每个元素都放入n元素中,或者放入n x n元素中,所以:

a = [0, 1, 2]
b = [1, 0, 1]
c = [2, 1, 0]

或者一张桌子(或者矩阵?)这样地: table 3x3,我只需要白色背景的部分。

当我读取要处理的数据时,我将每个节点作为一个新元素放入一个列表中,因此通过这3个步骤,我逐渐得到:

lw = []
lw = ['a']
lw = ['a','b']
lw = ['a','b','c']

有没有办法用lw的元素创建空列表?我真的很想给它们起个名字,比如dis a,dis bdis c等等。我试着用字典来做,但是我不能像通常那样用这些列表来操作。说实话,我更喜欢使用列表的解决方案,因为我已经为这个编写了程序的后一部分。

编辑: 好的,你们中的一个要求输入/输出,以使我的问题更清楚。Mmy输入是:

lw = ['a','b','c']

我想要的输出是:

a = []
b = []
c = []

或者类似的东西(可以很容易地识别节点的列表,我在lw中列出了这些列表)

编辑2:

好的,现在我创建了很多这样的列表(仍然坚持示例):

dis['a']
dis['b']
dis['c']

我有工作指令

path[X][Y]

它在输入时接受节点的名称(如lwlist ex.'a'),在输入时返回

从X到Y的最短路径上的节点。我现在需要做的是用

len(path[X][Y])

然后减去1(它也在计算“起点”,所以它在修正它)。那我有了

把这个号码放在列表中相应的位置。我想做一个循环,所以

自动将数字附加到现有列表中,因此我将自动从

dis['a'] = []
dis['b'] = []
dis['c'] = []

dis['a'] = [0, 1, 2]
dis['b'] = [1, 0, 1]
dis['c'] = [2, 1, 0]

不用担心,因为它计算路径两次(例如从ab然后从ba),它不一定是完美的;)我试图创建这样的方法,但我不知道如何将结果存储在所述列表中(或者如果我甚至是正确的话)。我的建议是:

def lo():   
    for i in range(0, len(lw)):
        for j in range (0, len(lw)):
        dis[i].append(path[lw[i]][lw[j]])

Tags: path项目in路径元素编辑列表for
2条回答

如果我是正确的,你需要动态地创建变量。 这里是一个简短的答案,要了解更多信息,请查看本文How can you dynamically create variables via a while loop?实际上,您可以在这里找到不同的方法,例如使用dict

>>> lw = ['a', 'b', 'c']
>>> for l in lw:
        exec("{prefix}{var}=[]".format(prefix="dis_", var=l)) 

>>> dis_a
        []

>>> dis_b.append('some')
>>> dis_b
        ['some']

你用字典不能操作的东西是什么?

dis_adis_bdis_c。。。也可以是dis['a']dis['b']dis['c']。。。

你可以:

dis = {}
for elem in lw:
    dis[elem] = []
    # ...

想现在循环所有的dis-es吗?

for elem, val in dis.iteritems():
    print elem    # your a, b, or c
    print val     # your [] corresponding to a, b, or c

如果要添加元素,并查找min和max(根据注释中的要求):

假设最初dis['a']得到[0, 1, 2]

还有。。。

dis['b'] = [1, 0, 1]
dis['c'] = [2, 1, 0]

现在您要向所有的dis-es添加一个新项。。。

item = 5
for elem in dis:
    dis[elem].append(item)

现在你想找到麦克斯。。。

for elem in dis:
    print max(dis[elem])

相关问题 更多 >