嗨我想创建一个存储类型和时间属性的列表.Type将是a或b。时间在0到100之间是随机的。例如l [0] =(a,5)。我知道如何创建一个列表,但我不知道如何做到这一点。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以将列表存储在列表中,也可以在列表中存储元组。
我们在这里给出一个简单的例子来解释上述评论。我们假设我们要存储数字和数字类型(“偶数”或“奇数”)。
假设我们有一个从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。