0
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]
4

3 回答 3

2

您正在考虑/尝试做的是动态命名变量。

不。

要么将您的数据留在其中list并通过索引访问它

my_list[0] #what you were trying to assign to 'a'
my_list[0][0] #the first element in that sub-list

或者,如果您想要为每个标识符分配有意义的标识符,您可以使用 adict将“键”分配给“值”。

d = {}
for sublist, meaningful_identifier in zip(my_list, my_meaningful_identifiers):
    d[meaningful_identifier] = sublist

无论哪种方式,利用 python 数据结构来做他们应该做的事情。

于 2013-10-23T18:05:04.557 回答
1

尝试:

myList = [map(float, line.split(',')) for line in open ("Alpha.txt")]

现在,您可以根据需要将每一行放在不同的变量中:

a = myList[0]
b = myList[1]

等等。但既然你有一个列表,最好使用它并使用索引访问元素。你确定对数组有正确的理解吗?

正如其他答案所指出的那样,动态创建变量是危险的并且没有意义。

于 2013-10-23T18:09:05.960 回答
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,尽管你可以解决这个问题。

于 2013-10-23T18:05:48.977 回答