Python个嵌套循环中同一个变量ID不同?
The same variable in Python Nested-loops has different IDs?
很简单的Python代码,但是为什么变量n
有不同的ID?如何实现这个函数获取car
的字典名?
a = [{'a':['apple','animal']},{'b':['banana']},{'c':['class','car']}]
n = 0
while n < 3:
print(id(n))
for k in a[n].keys():
if 'car' not in a[n][k]:
n += 1
print(id(n))
else:
print(k)
break
break
代码的结果是:
140720577618304
140720577618336
您似乎想在列表中搜索 car
并查找哪个键包含该列表。
a = [{'a':['apple','animal']},{'b':['banana']},{'c':['class','car']}]
for d in a:
for k in d.keys():
if 'car' in d[k]:
print(k)
break
输出:c
id
不是您要查找的内容。当遍历一个你没有改变的可迭代对象时,不要使用 while condition
或 for i in range(stop:start:end)
。相反,你会想要 for i in iterable
。在你的情况下,一个班轮可能是
a = [{'a':['apple','animal']},{'b':['banana']},{'c':['class','car']}]
answer = [k for d in a for k in d.keys() if 'car' in d[k]]
输出
['c']
Python 中的一个整数是不可变的。通过执行 n+=1
,您并没有修改名为 n
的对象,而是覆盖了名称以指向新的整数对象。
很简单的Python代码,但是为什么变量n
有不同的ID?如何实现这个函数获取car
的字典名?
a = [{'a':['apple','animal']},{'b':['banana']},{'c':['class','car']}]
n = 0
while n < 3:
print(id(n))
for k in a[n].keys():
if 'car' not in a[n][k]:
n += 1
print(id(n))
else:
print(k)
break
break
代码的结果是:
140720577618304
140720577618336
您似乎想在列表中搜索 car
并查找哪个键包含该列表。
a = [{'a':['apple','animal']},{'b':['banana']},{'c':['class','car']}]
for d in a:
for k in d.keys():
if 'car' in d[k]:
print(k)
break
输出:c
id
不是您要查找的内容。当遍历一个你没有改变的可迭代对象时,不要使用 while condition
或 for i in range(stop:start:end)
。相反,你会想要 for i in iterable
。在你的情况下,一个班轮可能是
a = [{'a':['apple','animal']},{'b':['banana']},{'c':['class','car']}]
answer = [k for d in a for k in d.keys() if 'car' in d[k]]
输出
['c']
Python 中的一个整数是不可变的。通过执行 n+=1
,您并没有修改名为 n
的对象,而是覆盖了名称以指向新的整数对象。