Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中编写嵌套for循环的简洁方法_Python_List_For Loop_Nested - Fatal编程技术网

在python中编写嵌套for循环的简洁方法

在python中编写嵌套for循环的简洁方法,python,list,for-loop,nested,Python,List,For Loop,Nested,(更新)我需要找到一个有450万个状态的马尔可夫链的平稳分布。这意味着我需要解一个包含450万个方程的线性系统。每个状态是一个大小为6的向量。我试图将每个状态存储在一个列表中。以下是我创建所有可受理国家努力的一部分 我试图通过一大组数字循环,并创建一组向量。以下是我的代码的简化版本: mylist=[] for i in range(1,4): for j in range(1,4-i): for k in range(0,5-i-j): Temp

(更新)我需要找到一个有450万个状态的马尔可夫链的平稳分布。这意味着我需要解一个包含450万个方程的线性系统。每个状态是一个大小为6的向量。我试图将每个状态存储在一个列表中。以下是我创建所有可受理国家努力的一部分

我试图通过一大组数字循环,并创建一组向量。以下是我的代码的简化版本:

mylist=[]
for i in range(1,4):
    for j in range(1,4-i):
        for k in range(0,5-i-j):
            Temp=[i,j,k]
            mylist.extend(Temp)
            print(mylist)
            mylist=[]
            Temp=[]
这将给我:

[1, 1, 0]
[1, 1, 1]
[1, 1, 2]
[1, 2, 0]
[1, 2, 1]
[2, 1, 0]
[2, 1, 1]
我的问题是:在Python中有没有一种更整洁、更好、更高效的方法


谢谢

如果您正在寻找一行代码来创建相同的向量,您可以在python中使用

范例-

myList = [[i,j,k] for i in range(1,4) for j in range(1,4-i) for k in range(0,5-i-j)]
myList
>> [[1, 1, 0], [1, 1, 1], [1, 1, 2], [1, 2, 0], [1, 2, 1], [2, 1, 0], [2, 1, 1]]
虽然我不认为这是在任何整洁或更有效的

虽然在使用
timeit
进行了一些测试之后,我们可以看到列表理解可能会快一点-

In [1]: def foo1():
   ...:     l = []
   ...:     for i in range(100):
   ...:                 for j in range(100):
   ...:                         l.append([i,j])
   ...:     return l

In [3]: def foo2():
   ...:     return [[i,j] for i in range(100) for j in range(100)]
   ...: 

In [4]: %timeit foo1()
100 loops, best of 3: 3.08 ms per loop

In [5]: %timeit foo2()
100 loops, best of 3: 2.16 ms per loop

In [6]: %timeit foo2()
100 loops, best of 3: 2.18 ms per loop

In [7]: %timeit foo1()
100 loops, best of 3: 3.11 ms per loop

如果您正在寻找一行代码来创建相同的向量,那么可以在python中使用

范例-

myList = [[i,j,k] for i in range(1,4) for j in range(1,4-i) for k in range(0,5-i-j)]
myList
>> [[1, 1, 0], [1, 1, 1], [1, 1, 2], [1, 2, 0], [1, 2, 1], [2, 1, 0], [2, 1, 1]]
虽然我不认为这是在任何整洁或更有效的

虽然在使用
timeit
进行了一些测试之后,我们可以看到列表理解可能会快一点-

In [1]: def foo1():
   ...:     l = []
   ...:     for i in range(100):
   ...:                 for j in range(100):
   ...:                         l.append([i,j])
   ...:     return l

In [3]: def foo2():
   ...:     return [[i,j] for i in range(100) for j in range(100)]
   ...: 

In [4]: %timeit foo1()
100 loops, best of 3: 3.08 ms per loop

In [5]: %timeit foo2()
100 loops, best of 3: 2.16 ms per loop

In [6]: %timeit foo2()
100 loops, best of 3: 2.18 ms per loop

In [7]: %timeit foo1()
100 loops, best of 3: 3.11 ms per loop

我完全不明白你想用你的列表归档什么。 您可以通过以下方式获得相同的输出:

for i in range(1,4):
    for j in range(1,4-i):
        for k in range(0,5-i-j):
            print([i,j,k])

我完全不明白你想用你的列表归档什么。 您可以通过以下方式获得相同的输出:

for i in range(1,4):
    for j in range(1,4-i):
        for k in range(0,5-i-j):
            print([i,j,k])

我投票结束这个问题,因为它属于@CoreyOgburn,如果它是来自真实项目的实际代码的话。就目前而言,它是一个假设/示例代码,这在代码评审中显然是离题的。此外,更好地适应CR并不是一个紧密的原因;若要帮助迁移问题,您需要自定义标志以引起版主的注意。请执行一次,然后将其序列化,以便下次需要时可以直接在中阅读。@wwii:谢谢;你能解释一下什么是序列化吗?我正在处理大量的数据,我完全可以使用任何提示来节省时间(特别是内存)。您可能需要进一步阐述您的问题,并描述您试图达到的效率类型。我把它理解为时间,所以我的建议是保持代码的原样,创建一次数据(喝杯茶的时候),然后将其写入光盘,以便在需要时重新读取()。它可以很容易地写成一个文本文件或文件。你还应该在问题中定义大量的数据。我投票将这个问题作为离题题来结束,因为它属于@CoreyOgburn,如果它是来自真实项目的实际代码的话。就目前而言,它是一个假设/示例代码,这在代码评审中显然是离题的。此外,更好地适应CR并不是一个紧密的原因;若要帮助迁移问题,您需要自定义标志以引起版主的注意。请执行一次,然后将其序列化,以便下次需要时可以直接在中阅读。@wwii:谢谢;你能解释一下什么是序列化吗?我正在处理大量的数据,我完全可以使用任何提示来节省时间(特别是内存)。您可能需要进一步阐述您的问题,并描述您试图达到的效率类型。我把它理解为时间,所以我的建议是保持代码的原样,创建一次数据(喝杯茶的时候),然后将其写入光盘,以便在需要时重新读取()。它可以很容易地写成一个文本文件或文件。您还应该在问题中定义大量数据。