2024-04-20 03:11:30 发布
网友
好吧, 假设我在一个文件中有一个变量名列表,我想将它们存储在一个列表中。 我可以做一个while循环,并将它们作为字符串保存在列表中。如何将其更改为一组变量名。你知道吗
list = [] f = open("text.txt",r) f.readline() while line != "": list.append(line) f.readline()
我希望list是变量名的列表,而不是字符串的列表。 谢谢
首先,变量名就是字符串。所以,你已经把变量名放在一个列表里了。你知道吗
如果您试图查找由每个字符串命名的全局变量,并将这些变量放入列表中…那么,您不能这样做,因为您不能将变量放入列表中。变量在Python中不是真实的东西,它们只是值的(内置的、全局的、局部的或限定的)名称;真正的东西是值。你知道吗
但是,如果您试图查找由每个字符串命名的全局变量,并将这些变量的值放入一个列表中…这很简单。更改此行:
list.append(line)
…对此:
list.append(globals()[line])
但是,您的代码还有许多其他问题,这意味着它实际上无法工作。您使用了变量r而不是字符串'r'作为文件模式,该模式(除非r碰巧持有有效的模式字符串)将失败。你也从不给line赋值,只是扔掉每个readline的结果,这意味着你会得到一个异常(或一个无限循环或一个立即退出的循环)试图访问它。你知道吗
r
'r'
line
readline
同时,大多数逐行读取文件的方法,包括f.readline(),都会将换行符保留在字符串的末尾,而且很可能没有名称以换行符结尾的变量。你知道吗
f.readline()
当我们在做的时候,这不是一个很好的python代码。永远不要给变量命名list,应该始终关闭文件,空字符串为false,因此不需要比较,并且应该使用for循环来迭代集合。你知道吗
list
for
所以:
values = [] with open("text.txt") as f: for line in f: values.append(globals()[line.rstrip('\n')])
或者,更简单地说,使用列表理解:
with open("text.txt") as f: values = [globals()[line.rstrip('\n')] for line in f]
最后,这整个设计目标闻起来很奇怪,我敢打赌,这不是正确的方式来完成任何你想完成的。你知道吗
首先,变量名就是字符串。所以,你已经把变量名放在一个列表里了。你知道吗
如果您试图查找由每个字符串命名的全局变量,并将这些变量放入列表中…那么,您不能这样做,因为您不能将变量放入列表中。变量在Python中不是真实的东西,它们只是值的(内置的、全局的、局部的或限定的)名称;真正的东西是值。你知道吗
但是,如果您试图查找由每个字符串命名的全局变量,并将这些变量的值放入一个列表中…这很简单。更改此行:
…对此:
但是,您的代码还有许多其他问题,这意味着它实际上无法工作。您使用了变量
r
而不是字符串'r'
作为文件模式,该模式(除非r
碰巧持有有效的模式字符串)将失败。你也从不给line
赋值,只是扔掉每个readline
的结果,这意味着你会得到一个异常(或一个无限循环或一个立即退出的循环)试图访问它。你知道吗同时,大多数逐行读取文件的方法,包括
f.readline()
,都会将换行符保留在字符串的末尾,而且很可能没有名称以换行符结尾的变量。你知道吗当我们在做的时候,这不是一个很好的python代码。永远不要给变量命名
list
,应该始终关闭文件,空字符串为false,因此不需要比较,并且应该使用for
循环来迭代集合。你知道吗所以:
或者,更简单地说,使用列表理解:
最后,这整个设计目标闻起来很奇怪,我敢打赌,这不是正确的方式来完成任何你想完成的。你知道吗
相关问题 更多 >
编程相关推荐