Python:添加列表和访问元素

时间:2017-09-17 14:58:38

标签: python arrays list

我是Python新手并且列表存在问题。 也就是说,我要求用户填写2个列表,一个用于汽车,一个用于生产年份。然后我将两个列表附加到一个。

enter code here
carYear = []
carYear.append(cars)
carYear.append(year)

我有两个问题: a)是否有一种优雅的方式来打印这些列表,因此元素汽车和年份彼此靠近列出(例如:保时捷,1998)? b)是否可以从carYear列表访问第一个列表(汽车)并打印出来?

3 个答案:

答案 0 :(得分:2)

您可以将两个列表压缩在一起,如下所示:

cars = ["car1", "car2", "car3"]
years = ["2012", "2015", "2017"]
for c, y in zip(cars, years):
    print( "{0}, {1}".format(c, y) )

对于每次迭代,您可以打印c和y。这是汽车的名称和年份。

答案 1 :(得分:0)

我建议您更改数据结构以使用dict而不是并行list对象。字典(dict)有时被称为地图或关联数组。它们允许您通过将数据与键值相关联来访问数据。以下示例假定cars的元素将用作键。

您可以使用zip从列表中创建字典,将给定的序列转换为元组。

>>> cars = ['civic', 'corvette', 'prius']
>>> years = ['2009', '1979', '2017']
>>> zip(cars, years)
[('civic', '2009'), ('corvette', '1979'), ('prius', '2017')]

list tuple可用于初始化dict,其中每个元组的第一个和第二个元素分别是键和值。

>>> carYear = dict(zip(cars, years))
>>> carYear
{'corvette': '1979', 'prius': '2017', 'civic': '2009'}

现在,你可以这样做:

>>> carYear['corvette']
'1979'

为了打印dict个对象的内容,我喜欢使用.items()方法,将方法分解成元组。观察:

for car, year in sorted(carYear.items()):
    print('Car: {} => {}'.format(car, year))

我正在使用sorted来确保输出一致。由于dict对象的实现,.items()每次运行时都会以随机顺序返回数据。 sorted解决了这个问题,从而产生了一致的输出。

有关Python词典的更多信息,请参阅此处的Python文档: https://docs.python.org/3/tutorial/datastructures.html#dictionaries

答案 2 :(得分:0)

您可以尝试namedtuple(它应该比dict更快),例如:

from collections import namedtuple


cars = []
Car = namedtuple('Car', ['type', 'year'])
cars.append(Car('Porsche', '1998'))

for car in cars:
    print('{0}, {1}'.format(car.type, car.year))

但请注意,namedtuples是不可变的。即你不能car.type = 'BMW'