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

时间:2015-12-12 13:42:19

标签: python list loops

我正在尝试在我的大学组建一个编程项目,但我被困住了。我已经涵盖了“数学”部分,但我需要Python中的列表和循环方面的帮助。

我正在使用图表,让我举一个例子,让它更清晰: 3 node graph

正如你所看到的,我有3个节点和2个边缘,没什么特别的。我需要计算每对节点之间最近的路由,并且我已经覆盖了它。现在我需要将它们分别放在 n 列表, n 元素中,或者放在 < em> nxn ,所以:

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

或像这样的表格(或矩阵?): table 3x3,我只需要白色背景的部分。

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

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

有没有办法,用 lw 的元素创建空列表?我真的想将它们命名为 dis_a dis_b dis_c 等我尝试用字典来做,但后来我无法操纵这些列表,就像我通常那样。说实话,我更喜欢使用列表的解决方案,因为我已经为此编写了程序的后半部分。

编辑: 好的,所以你们中的一个人要求输入/输出让我的问题更清晰。妈咪输入是:

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

我想要的输出是:

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

或类似的东西(可以通过节点轻松识别的列表,我在 lw 中列出的

EDIT2:

好的,现在我有很多像这样创建的列表(仍然坚持这个例子):

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

我有一个工作命令

path[X][Y]

在输入中获取节点的名称(如 lw 列表,例如'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]

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

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

2 个答案:

答案 0 :(得分:2)

你不能用字典来操纵什么?

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

你可以这样做:

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

想要遍历所有dis - 现在?

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])

答案 1 :(得分:-1)

如果我正确,您想要动态创建变量。 这里是简短的回答,有关更多信息,请查看此帖子How can you dynamically create variables via a while loop?实际上,您可以找到不同的方法,例如使用词典。

>>> 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']