[英]How to check if a list exists in python?
我有一个networkx图。 我通过添加边缘来添加节点
G.add_edge(route[i-1],route[i]);
现在,通过直接添加边创建节点后,我将添加一个名为
G.node[route[i]]['position'] = list()
当我一次又一次得到相同的节点时,我会追加位置
G.node[route[i]]['position'].append( i - 3 )
现在,当我要附加时,如何检查列表是否存在? 确实在做
G.node[route[i]]['position'] = list()
清除现有元素列表?
编辑-----我之前的问题令人困惑,我想继续添加到列表中,但是除非列表存在,否则我无法追加,对吗? 所以我必须在G.node[route[i]]['position'] = list()
执行G.node[route[i]]['position'] = list()
所以下一次当我想在另一个循环实例中添加到同一列表时,我怎么知道一个列表G.node[route[i]]['position']
,我不必再次创建它。
编辑-----我认为列表本身是关键,所以我做了
if not 'position' in G.node[route[i]]:
它的工作原理
G.node[route[i]]['position'] = list()
将使插槽G.node[route[i]]['position']
保留一个空列表,但不会影响该列表之前持有的对象,可能还有其他对象可以参考。
而是使用: del l[:]
清空列表。
如果要自动创建列表,请使用collections.defaultdict
将新创建的条目默认为列表。
是的,这将清除现有列表。 你可以试试
G.node[route[i]].setdefault('position', []).append(...)
每当您要追加元素时。
不确定这是否是您的意思,但是分配list()时应确保要添加一个列表。 如果已经有一个列表,则任务将创建一个新列表(请参阅Marcin的答案)。 测试:
>>> a = list()
>>> for i in range(10):
... a.append(i)
...
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = a
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a = list()
>>> a
[]
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
使用isinstance()
并执行以下操作:
if not ininstance(G.node[route[i]]['position'], list):
G.node[route[i]]['position'] = list()
G.node[route[i]]['position'].append(i - 3)
或使用如下type
:
if not type(G.node[route[i]]['position']) is list
我必须说这种检查是非Python的,通常在成为列表并进行检查之前,您应该知道G.node[route[i]]['position']
是什么。
例如,如果它为None
,那么您可以做(假设键'position'存在,否则只需调用get('position')
):
if G.node[route[i]]['position'] is None:
G.node[route[i]]['position'] = list()
G.node[route[i]]['position'].append(i - 3)
.. = list()
)是否清除已经存在的元素列表? 答案是不。
list()
将实例化一个新的空列表。
您可能想看一下这样的问题: 如何在Python中清空列表? 。
简而言之:
G.node[route[i]]['position'][:] = []
将清除您的列表。
只需使用get:
if G.node[route[i]].get('position') is None:
G.node[route[i]]['position'] = list()
else:
G.node[route[i]]['position'].append(stuff)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.