Python:添加列表和访问元素

Python:添加列表和访问元素,python,arrays,list,Python,Arrays,List,我是Python新手,对列表有问题。 也就是说,我要求用户填写两个列表,一个是汽车列表,另一个是生产年份列表。然后我将这两个列表附加到一个列表中 enter code here carYear = [] carYear.append(cars) carYear.append(year) 我有两个问题: a) 是否有一种优雅的方式来打印这些列表,从而使元素car和year彼此接近(例如:Porsche,1998)? b) 是否可以从carYear列表中访问第一个列表(车辆)并打印 您可以将两个列

我是Python新手,对列表有问题。 也就是说,我要求用户填写两个列表,一个是汽车列表,另一个是生产年份列表。然后我将这两个列表附加到一个列表中

enter code here
carYear = []
carYear.append(cars)
carYear.append(year)
我有两个问题: a) 是否有一种优雅的方式来打印这些列表,从而使元素car和year彼此接近(例如:Porsche,1998)?
b) 是否可以从carYear列表中访问第一个列表(车辆)并打印

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

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

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

您可以将两个列表按如下方式压缩在一起:

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

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

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

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

>>> cars = ['civic', 'corvette', 'prius']
>>> years = ['2009', '1979', '2017']
>>> zip(cars, years)
[('civic', '2009'), ('corvette', '1979'), ('prius', '2017')]
元组的
列表
可用于初始化
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))
我使用
排序
确保输出一致。由于实现了
dict
对象,
.items()
将在每次运行时以随机顺序返回数据<代码>排序
解决了此问题,从而实现了一致的输出

有关Python字典的更多信息,请参见此处的Python文档:

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

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

>>> cars = ['civic', 'corvette', 'prius']
>>> years = ['2009', '1979', '2017']
>>> zip(cars, years)
[('civic', '2009'), ('corvette', '1979'), ('prius', '2017')]
元组的
列表
可用于初始化
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))
我使用
排序
确保输出一致。由于实现了
dict
对象,
.items()
将在每次运行时以随机顺序返回数据<代码>排序
解决了此问题,从而实现了一致的输出

有关Python字典的更多信息,请参见此处的Python文档:

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

从集合导入namedtuple
汽车=[]
Car=namedtuple('Car',['type','year']))
汽车.附加(汽车('Porsche','1998'))
对于车内车:
打印(“{0},{1}.”格式(car.type,car.year))
但是请注意,命名的元组是不可变的。i、 e.你不能做
car.type='BMW'
你可以试试(应该比
dict
快),例如:

从集合导入namedtuple
汽车=[]
Car=namedtuple('Car',['type','year']))
汽车.附加(汽车('Porsche','1998'))
对于车内车:
打印(“{0},{1}.”格式(car.type,car.year))

但是请注意,命名的元组是不可变的。i、 e.你不能做
car.type='BMW'

@Ewa欢迎你。如果你有50分钟的时间,你可以看看Raymond Hettinger(核心python开发人员)的演讲:他在21:50谈论izip。Izip比zip好(但你需要导入itertools。这就是为什么我在回答中没有提到它)。@Ewa不客气。如果你有50分钟的时间,你可以看看Raymond Hettinger(核心python开发人员)的演讲:他在21:50谈论izip。Izip比zip好(但是你需要导入itertools。这就是为什么我在回答中没有提到它)。