def main():
my_list = [[float(i) for i in line.split(',')] for line in open("Alpha.txt")]
print(my_list)
for elem in my_list:
listA=[]
listA = elem
print(listA)
main()
此代码打印出正在寻找的正确数据,但是我需要将每个打印从for循环设置为一个对象。关于我将如何做到这一点的任何帮助?
[1.2, 4.3, 7.0, 0.0]
[3.0, 5.0, 8.2, 9.0]
[4.0, 3.0, 8.0, 5.6]
[8.0, 4.0, 3.0, 7.4]
答案 0 :(得分:2)
您正在考虑/尝试做的是动态命名变量。
别。
将数据保留在list
并通过索引
my_list[0] #what you were trying to assign to 'a'
my_list[0][0] #the first element in that sub-list
或者,如果您要为每个标识符分配有意义的标识符,则可以使用dict
将“键”分配给“值”。
d = {}
for sublist, meaningful_identifier in zip(my_list, my_meaningful_identifiers):
d[meaningful_identifier] = sublist
无论哪种方式,利用python数据结构来做他们应该做的事情。
答案 1 :(得分:1)
这不是一个好主意,让我警告你,你永远不应该在生产代码中使用它(它很容易注入代码),并搞砸你的全局命名空间,但它会按你的要求做。 强>
您可以使用exec()
,这是一个动态执行语句的函数。
def main():
my_list = [[float(i) for i in line.split(',')] for line in open("Alpha.txt", "r")]
print(my_list)
for elem in my_list:
exec "%s = %s" % ("abcdefghijklmnopqrstuvwxyz"[my_list.index(elem)], elem) in globals()
main()
现在,您的全局命名空间填充了与元素对应的变量a,b,c等。
它也容易出现异常,如果你有超过26个元素,你会得到一个IndexError,尽管你可以解决这个问题。
答案 2 :(得分:1)
尝试:
myList = [map(float, line.split(',')) for line in open ("Alpha.txt")]
现在,如果需要,您可以在不同的变量中获取每一行:
a = myList[0]
b = myList[1]
等等。但是因为你有一个列表,所以最好使用它并使用索引访问元素。你确定对数组有正确的理解吗?
正如其他答案所指出的,动态创建变量是危险的,没有意义。