jody970214 发表于 2020-3-6 21:16:33

关于list.remove

seen = 'A'
graph = {
    "A" : ["B", "C"],
    "B" : ["A", "C", "D"],
    "C" : ["A", "B", "D", "E"],
    "D" : ["B", "C", "E", "F"],
    "E" : ["C", "D"],
    "F" : ["D"]
}
for i in graph:
    print('')
    for j in graph:
      print(j, end = '')
      if j in seen:
            graph.remove(j)

小弟尝试以上代码希望将字典中所有的A去除然而结果却不尽人意,结果如下:



BC
AD
ADE
BCEF
CD
D

不知道这是这么回事,希望大佬解决一下{:10_254:} {:10_254:}

一个账号 发表于 2020-3-6 21:28:17

因为你删除了列表中的元素但没删除 j,把代码改成这样:

seen = 'A'
graph = {
    "A" : ["B", "C"],
    "B" : ["A", "C", "D"],
    "C" : ["A", "B", "D", "E"],
    "D" : ["B", "C", "E", "F"],
    "E" : ["C", "D"],
    "F" : ["D"]
}
for i in graph:
    for j in graph:
      if j in seen:
            graph.remove(j)

for value in graph.values():
    for i in value:
      print(i, end="")
    print()

Hoiste 发表于 2020-3-6 21:33:51

其实你的问题已经解决了,之所以打印出A是因为你在移除字符'A'之前先执行了print(j, end = ''),所以就原样打印了一遍每个列表的元素,你可以在最后print(graph)看看,已经没有'A'元素在里面了
页: [1]
查看完整版本: 关于list.remove