我是Python新手并且列表存在问题。 也就是说,我要求用户填写2个列表,一个用于汽车,一个用于生产年份。然后我将两个列表附加到一个。
enter code here
carYear = []
carYear.append(cars)
carYear.append(year)
我有两个问题: a)是否有一种优雅的方式来打印这些列表,因此元素汽车和年份彼此靠近列出(例如:保时捷,1998)? b)是否可以从carYear列表访问第一个列表(汽车)并打印出来?
答案 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'