Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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_Numpy - Fatal编程技术网

Python 我可以将for循环中的数据存储为每个迭代的不同变量吗?

Python 我可以将for循环中的数据存储为每个迭代的不同变量吗?,python,numpy,Python,Numpy,我有一个函数,它在列表中创建一组结果。这是一个for循环,它在每次迭代中更改一个变量。我需要能够单独存储这些列表,以便能够以图形的形式显示每个迭代之间的结果差异 有没有办法这样分开存放?到目前为止,我找到的唯一解决方案是多次复制函数并手动更改它存储到的列表的变量和名称,但显然这是一种糟糕的方法,我认为必须有一种正确的方法 这是代码。这个函数很混乱,但可以工作。理想情况下,我可以将这些都放在另一个for循环中,该循环每次迭代都会改变减速,然后将收集到的平均值存储为不同的列表,这样我就可以比较每次迭

我有一个函数,它在列表中创建一组结果。这是一个for循环,它在每次迭代中更改一个变量。我需要能够单独存储这些列表,以便能够以图形的形式显示每个迭代之间的结果差异

有没有办法这样分开存放?到目前为止,我找到的唯一解决方案是多次复制函数并手动更改它存储到的列表的变量和名称,但显然这是一种糟糕的方法,我认为必须有一种正确的方法

这是代码。这个函数很混乱,但可以工作。理想情况下,我可以将这些都放在另一个for循环中,该循环每次迭代都会改变减速,然后将收集到的平均值存储为不同的列表,这样我就可以比较每次迭代收集到的平均值

import numpy as np
import random
import matplotlib.pyplot as plt
from statistics import mean

road_length = 500
deceleration_p = 0.1
max_speed = 5
buffer_road = np.zeros(road_length, dtype=int)
buffer_speed = 0
number_of_iterations = 1000
average_speed = 0
average_speed_list = []
collected_averages = []
total_speed = 0

for cars in range(1, road_length):
    empty_road = np.ones(road_length - cars, dtype=int) * -1
    cars_on_road = np.ones(cars, dtype=int)
    road = np.append(empty_road, cars_on_road)
    np.random.shuffle(road)
    for i in range(0, number_of_iterations):
        # acceleration
        for speed in np.nditer(road, op_flags=['readwrite']):
            if -1 < speed < max_speed:
                speed[...] += 1
        # randomisation
        for speed in np.nditer(road, op_flags=['readwrite']):
            if 0 < speed:
                if deceleration_p > random.random():
                    speed += -1
        # slowing down
        for cell in range(0, road_length):
            speed = road[cell]
            for val in range(1, speed + 1):
                new_speed = val
                if (cell + val) > (road_length - 1):
                    val += -road_length
                if road[cell + val] > -1:
                    speed = val - 1
                    road[cell] = new_speed - 1
                    break
        buffer_road=np.ones(road_length, dtype=int)*-1
        for cell in range(0, road_length):
            speed = road[cell]
            buffer_cell = cell + speed
            if (buffer_cell) > (road_length - 1):
                buffer_cell += -road_length
            if speed > -1:
                total_speed += speed
                buffer_road[buffer_cell] = speed
        road = buffer_road
        average_speed = total_speed/cars
        average_speed_list.append(average_speed)
        average_speed = 0
        total_speed = 0
    steady_state_average=mean(average_speed_list[9:number_of_iterations])
    average_speed_list=[]
    collected_averages.append(steady_state_average)

据我所知不是这样。如评论中所述,你可以使用字典,但我的建议是使用列表。对于循环的每次迭代,您都可以附加值。据我所知,你说你的结果在一个列表中,所以你可以制作一个2D数组。我的建议是使用numpy阵列,因为它要快得多。希望这会有所帮助。

嗨,你能在帖子中包含代码吗?为什么不把它们保存到字典中呢?{'foo':[…],'bar':[…]}之后,您可以查找与您传递的每个变量对应的列表Hello!欢迎来到StackOverflow!请提供您的代码,以便在这方面获得更多帮助,因为StackOverflow主要基于此原则工作!但是,我建议为这个特定任务使用一个列表列表。我可以在循环中创建新的命名变量吗?答案是肯定的。这样做对吗?只有大约0.0001%的时间。相反,可以使用类似列表的容器,将每个循环的结果追加到末尾,或者使用带有有意义的键名的字典。将变量设置为数组列表,并在每次迭代中向其追加结果数组。通常,您不希望动态创建变量-请参见