3

我正在尝试制作 100 个名称如下的列表:list1、list2、list3 等。基本上我想做的是下面(虽然我知道它不起作用我只是不知道为什么)。

num_lists=100

while i < num_lists:
    intial_pressure_{}.format(i) = []
    centerline_temperature_{}.format(i) = []

然后我想遍历从文件中插入数据的每个列表,但我不确定如何在该循环中更改列表的名称。因为我知道这行不通。

while i < num_lists:
    initial_pressure_i[0] = value

我确信我想做的事情真的很容易,但我对 python 的体验只有几天。任何帮助表示赞赏。谢谢

4

3 回答 3

5

您可以在列表内创建 100 个列表,而不是创建 100 个列表变量。做就是了:

list_of_lists = [[] for _ in xrange(100)]

然后,您可以通过执行以下操作访问列表中的列表:

list_of_lists[0] = some_value  # First list
list_of_lists[1] = some_other_value  # Second list
# ... and so on
于 2013-04-29T01:02:41.597 回答
2

欢迎来到 Python!

阅读您对您正在尝试做的事情的评论,我建议放弃您当前的方法。选择一个更容易使用的数据结构。

假设您有一个文件列表:

files = ['data1.txt', 'data2.txt',...,'dataN.txt']

现在您可以依次遍历这些文件:

data = {}
for file in files:
   data[file] = {}
   with open(file,'r') as f:
      lines=[int(line.strip()) for line in f]
      data[file]['temps'] = lines[::2]            #even lines just read
      data[file]['pressures'] = lines[1::2]       #odd lines

然后你将有一个像这样的列表字典的字典:

 {'data1.txt': {'temps': [1, 2, 3,...], 'pressures': [1,2,3,...]},
  'data2.txt': {'temps': [x,y,z,...], 'pressures': [...]},
  ...}

然后你可以像这样得到你的最大值:

max(data['data1.txt']['temps'])

为了让您可以看到数据的样子,请运行以下命令:

data = {}
for i in range(100):
    item = 'file' + str(i)
    data[item] = {}
    kind_like_file_of_nums = [float(x) for x in range(10)]
    data[item]['temps'] = kind_like_file_of_nums[0::2]
    data[item]['pres'] = kind_like_file_of_nums[1::2]

print(data)
于 2013-04-29T01:52:28.970 回答
1

你可以制作一个列表字典。这是在类似线程中找到的示例:

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for i in a:
...   for j in range(int(i), int(i) + 2):
...     d[j].append(i)
...
>>> d
defaultdict(<type 'list'>, {1: ['1'], 2: ['1', '2'], 3: ['2']})
>>> d.items()
[(1, ['1']), (2, ['1', '2']), (3, ['2'])]
于 2013-04-29T01:03:03.493 回答