从单个列表构建多个列表,其中包含多个列表

时间:2013-10-23 17:47:28

标签: python

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]

3 个答案:

答案 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]

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

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