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

PYTHON-在循环中创建多个列表,python,list,loops,Python,List,Loops,我正试图在我的大学里完成一个编程项目,但我被卡住了。我已经介绍了“数学”部分,但是我需要Python中列表和循环的帮助 我正在使用图表,让我举一个例子,让它更清楚: 正如你所看到的,我有3个节点和2条边,没什么特别的。我需要计算每对节点之间最近的路由,我已经讨论过了。现在,我需要将其放入n列表中,每个n元素中,或者放入nxn中,因此: a = [0, 1, 2] b = [1, 0, 1] c = [2, 1, 0] 或者像这样的表格(或矩阵?): ,我只需要白色背景的部分 当我读取要处理的

我正试图在我的大学里完成一个编程项目,但我被卡住了。我已经介绍了“数学”部分,但是我需要Python中列表和循环的帮助

我正在使用图表,让我举一个例子,让它更清楚:

正如你所看到的,我有3个节点和2条边,没什么特别的。我需要计算每对节点之间最近的路由,我已经讨论过了。现在,我需要将其放入n列表中,每个n元素中,或者放入nxn中,因此:

a = [0, 1, 2]
b = [1, 0, 1]
c = [2, 1, 0]
或者像这样的表格(或矩阵?): ,我只需要白色背景的部分

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

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

有没有办法从lw的元素中创建空列表?我真的很想把它们命名为disu adisu bdis\u c等等。我试着用字典来做,但我无法像通常那样处理这些列表。说实话,我更喜欢使用列表的解决方案,因为我已经为这个编写了程序的后半部分

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

lw = ['a','b','c']
我期望的输出是:

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

编辑2:

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

我有一个工作指令

path[X][Y]
它在输入时采用节点的名称(如lwlist ex.“a”),在输入时返回节点的列表

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

len(path[X][Y])
然后从中减去1(它也在计算“起点”,所以它在修正它)。那我有

将此号码放在列表中相应的位置。我想做一个循环,所以它会

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

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

不用担心,它会计算两次路径(例如从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]])

你不能用字典处理什么

disu a
disu b
disu 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

如果要添加元素,并查找最小值和最大值(如注释中所要求的):

让我们先假设
dis['a']
get
[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)
现在你想找到max

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

如果我是正确的,您希望动态创建变量。 这是一个简短的回答,更多的信息请查看这篇文章,实际上你可以找到不同的方法,比如使用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']

您能否添加一个所需输出的示例,以使问题更清楚?“是否有任何方法,用lw的元素创建空列表?”您是否也可以澄清该陈述?你可以用任何东西创建空列表(也可以不用任何东西),所以这对我来说没有意义。@kjubus谢谢你。ComputerFellow的答案已经为您提供了一种实现所需输出的方法。我是python的新手(我想说,我也不是一个程序员,而是一个初学者),但当我像您在第一部分中所展示的那样做时,我可以打印所有创建的dis列表,并得到一个结果:打印(dis){'a':[],'c':[],'b':[]但是我怎样才能给它们添加值,找到最大值/最小值等等?@kjubus-我建议通读一遍。(如果您使用的是Python2,请改用)。但简单地说,要访问词典中的列表,您可以执行
dis['a']
dis['b']
等操作。要将数字1附加到列表
a
,您可以执行
dis['a']。附加(1)
。我希望和教程链接足以让您开始学习。注意:要了解更多有关词典的信息,将对您帮助最大。(和我的其他评论一样,这是到Python 3教程的链接。)@computerfellow谢谢!我认为它最终向我解释并解决了我的问题:)
d={k:[]对于lw中的k}
这是个坏主意。使用
exec
有各种各样的安全问题,只有真正知道自己在做什么的人才能使用。OP说他是Python初学者,所以他不应该使用
exec
@rmunn是的,你绝对是对的。
for elem in dis:
    print max(dis[elem])
>>> 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']