如何在python中的列表中存储(类型和时间)?

时间:2014-10-26 01:42:09

标签: python

嗨我想创建一个存储类型和时间属性的列表.Type将是a或b。时间在0到100之间是随机的。例如l [0] =(a,5)。我知道如何创建一个列表,但我不知道如何做到这一点。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以将列表存储在列表中,也可以在列表中存储元组。

我们在这里给出一个简单的例子来解释上述评论。我们假设我们要存储数字和数字类型(“偶数”或“奇数”)。

  • “E”=偶数:是2的倍数。
  • “O”=奇数不是。

假设我们有一个从1到10的数字列表。

l= [1,2,3,4,5,6,7,8,9,10]

在这种情况下,您有两种选择来存储此号码的数量和类型(奇数/偶数)。您可以使用列表列表或元组列表来存储它们。

如果你想使用元组列表

listOfTuples= []
for x in l:
    if x%2==0:
        listOfTuples+=[(x,'E')] #Equivalent to listTypes.append((x,'E'))
    else: 
        listOfTuples+=[(x,'O')] #Equivalent to listTypes.append((x,'O'))
print listOfTuples

结果:

[(1, 'O'), (2, 'E'), (3, 'O'), (4, 'E'), (5, 'O'), (6, 'E'), (7, 'O'), (8, 'E'), (9, 'O'), (10, 'E')]

如果您想使用列表清单

listOfLists= []
for x in l:
    if x%2==0:
        listOfLists+=[[x,'E']] #Equivalent to listTypes.append((x,'E'))
    else: 
        listOfLists+=[[x,'O']] #Equivalent to listTypes.append((x,'O'))

print listOfLists

结果:

[[1, 'O'], [2, 'E'], [3, 'O'], [4, 'E'], [5, 'O'], [6, 'E'], [7, 'O'], [8, 'E'], [9, 'O'], [10, 'E']]

元组和列表之间的选择不应该天真地进行。两者之间存在差异,元组速度快且内存效率高。但是,一旦你创建了一个元组,你就无法编辑它,它是不可变的。另一方面,列表是可变的,您可以编辑它们。

您可以直接指定新值来重新编辑列表列表。

listOfLists[3][0]="test"

结果将是:

[[1, 'O'], [2, 'E'], [3, 'O'], ['test', 'E'], [5, 'O'], [6, 'E'], [7, 'O'], [8, 'E'], [9, 'O'], [10, 'E']]

但是,如果使用元组存储对象,则可以这样做:

listOfTuples[3][0]="test"

你会收到这个错误:

Traceback (most recent call last):
  File "test.py", line 30, in <module>
    listOfTuples[3][0]="test"
TypeError: 'tuple' object does not support item assignment

有关python中元组和列表之间区别的更多信息,请查看thread