当我循环时,列表​​的名称会发生​​变化

时间:2013-04-29 00:55:11

标签: python list

我正在尝试使用以下名称制作100个列表:list1,list2,list3等。基本上我想要做的是下面(虽然我知道它不起作用我只是不确定为什么)。< / p>

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的体验只有几天。任何帮助表示赞赏。 感谢

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)

答案 2 :(得分:1)

你可以制作一份列表字典。以下是in a similar thread

的示例
>>> 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'])]