PYTHON-在循环中创建多个列表
我正试图在我的大学里完成一个编程项目,但我被卡住了。我已经介绍了“数学”部分,但是我需要Python中列表和循环的帮助 我正在使用图表,让我举一个例子,让它更清楚: 正如你所看到的,我有3个节点和2条边,没什么特别的。我需要计算每对节点之间最近的路由,我已经讨论过了。现在,我需要将其放入n列表中,每个n元素中,或者放入nxn中,因此: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] 或者像这样的表格(或矩阵?): ,我只需要白色背景的部分 当我读取要处理的
a = [0, 1, 2]
b = [1, 0, 1]
c = [2, 1, 0]
或者像这样的表格(或矩阵?):
,我只需要白色背景的部分
当我读取要处理的数据时,我将每个节点作为一个新元素放入一个列表中,因此通过以下三个步骤,我逐渐得到:
lw = []
lw = ['a']
lw = ['a','b']
lw = ['a','b','c']
有没有办法从lw的元素中创建空列表?我真的很想把它们命名为disu a,disu b,dis\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'] = []
到
不用担心,它会计算两次路径(例如从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]])
你不能用字典处理什么
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']