Python列表生成式和字典生成式实例

 更新时间:2024年06月21日 10:40:30   作者:程序员的战歌  
这篇文章主要介绍了Python列表生成式和字典生成式实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

列表生成式

格式

[ x  for  x in 可迭代对象]
[ x  for  x in 可迭代对象 if 条件]

1. 把要生成的元素 x 放到前面,执行的时候,先执行后面的for循环。

2. 后面跟上for循环,可以有多个for循环,也可以在for循环后面再加个if条件。

3. for循环后面可以是任何方式的迭代器(元组/列表/生成器..),只要可迭代对象的元素中至少有一个值。

例1:最简单的

In [1]: [x for x in 'abcd']
Out[1]: ['a', 'b', 'c', 'd']

例2:加if判断

In [1]: res = [10,11,12,13]
In [2]: [x for x in res if x > 10]
Out[2]: [11, 12, 13]

原生实现:
In [1]: arr = []
In [2]: for x in res:
  ....:     if x > 10:
  ....:         arr.append(x)
  ....:         
In [3]: arr
Out[3]: [11, 12, 13]

例3:迭代字典生成列表

print [v for k,v in {'a':'one','b':'two'}.items()]
输出:['one', 'two']

print [(k,v) for k,v in {'a':'one','b':'two'}.items()]
输出:[('a', 'one'), ('b', 'two')]

print [k+'='+v for k,v in {'name':'lyz','age':'26','job':'IT'}.items()]
输出:['job=IT', 'age=26', 'name=lyz']

字典生成式

格式

1. 在Python2.6或更早的版本,字典生成器可以接受迭代的键/值对。

d = dict((key, value) for (key, value) in iterable)

说明:

第一个k,v的()必须写,第二个()可不写。

2.6版本就是利用dict()函数,函数的参数是一个嵌套的序列,序列的元素是元组。

2. 从Python2.7或者3以后,你可以直接用字典推导式语法。

d = {key: value for (key, value) in iterable} # k,v的()可以不写

3. python2.7以上兼容两种写法,python2.6只能用第一种。

4. 可以用任何方式的迭代器(元组,列表,生成器..),只要可迭代对象的元素中有两个值。

python2.7写法

dict1 = {'one':1,'two':2,'three':3}
dict2 = {v:k for k,v in dict1.items()}
print dict2
输出:
{1: 'one', 2: 'two', 3: 'three'}

python2.6写法

dict1 = {'one':1,'two':2,'three':3}
dict3 = dict((v,k) for k,v in dict1.items())
print dict3
输出:
{1: 'one', 2: 'two', 3: 'three'}

例1:两种生成式方式生成字典

In [1]: arr=['wd','18','nan']
In [2]: dict((k,v) for k,v in enumerate(arr))
Out[2]: {0: 'wd', 1: '18', 2: 'nan'}
In [3]: {k:v for k,v in enumerate(arr)}
Out[3]: {0: 'wd', 1: '18', 2: 'nan'}

例2:线上实例

arr = [{'id':1,'name':'lyz','age':26},{'id':2,'name':'pc','age':30}]
print {str(x['id']):x['name'] for x in arr}
执行结果:
{'1': 'lyz', '2': 'pc'}

其他生成字典的方法

1. dict()函数

嵌套元组和嵌套类别可以直接通过dict命令转为字典(嵌套内部的元素只能是2个)

>>> a = [(1, 'ab'), (2, 'bc')]
>>> dict(a)
{1: 'ab', 2: 'bc'}

>>> result = ((1, 'ab'), (2, 'bc'))
>>> dict(result)
{1: 'ab', 2: 'bc'}

2. zip()函数

将多个元组或列表合并,合并规则是每个元组元素个数一致

In [1]: zip(('name','age','sex'),('wd','18','nan'))
Out[1]: [('name', 'wd'), ('age', '18'), ('sex', 'nan')]

In [2]: zip(['name','age','sex'],['wd','18','nan'])
Out[2]: [('name', 'wd'), ('age', '18'), ('sex', 'nan')]

In [3]: dict(zip(('name','age','sex'),('wd','18','nan')))  # 生产环境最常用
Out[3]: {'age': '18', 'name': 'wd', 'sex': 'nan'}

In [4]: zip(['name','age','sex'],['wd','18','nan'],['11',22])  # 列表元素个数不一致,以最少对列表为准
Out[4]: [('name', 'wd', '11'), ('age', '18', 22)]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python操作Access数据库基本步骤分析

    Python操作Access数据库基本步骤分析

    这篇文章主要介绍了Python操作Access数据库基本步骤,结合实例形式详细分析了Python针对access操作的具体步骤与相关注意事项,需要的朋友可以参考下
    2016-09-09
  • Python list sort方法的具体使用

    Python list sort方法的具体使用

    list.sort()方法是Python的列表方法,用于对原列表进行排序。本文详细的介绍了list.sort的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2021-12-12
  • 在python中使用with打开多个文件的方法

    在python中使用with打开多个文件的方法

    今天小编就为大家分享一篇在python中使用with打开多个文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 基于python实现图书管理系统

    基于python实现图书管理系统

    这篇文章主要为大家详细介绍了基于python实现图书管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • python写入csv时writerow()和writerows()函数简单示例

    python写入csv时writerow()和writerows()函数简单示例

    这篇文章主要给大家介绍了关于python写入csv时writerow()和writerows()函数的相关资料,writerows和writerow是Python中csv模块中的两个函数,用于将数据写入CSV文件,需要的朋友可以参考下
    2023-07-07
  • Python Flask框架实现小红书图片无水印解析下载

    Python Flask框架实现小红书图片无水印解析下载

    这篇文章主要为大家介绍了Python Flask框架实现小红书图片无水印解析下载,需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • python 包之 threading 多线程

    python 包之 threading 多线程

    这篇文章主要介绍了python 包之 threading 多线程,文章通过实例化threading.Thread类创建线程,下文相关资料介绍,需要的朋友可以参考一下
    2022-04-04
  • Python利用QQ邮箱发送邮件的实现方法(分享)

    Python利用QQ邮箱发送邮件的实现方法(分享)

    下面小编就为大家带来一篇Python利用QQ邮箱发送邮件的实现方法(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • django 邮件发送模块smtp使用详解

    django 邮件发送模块smtp使用详解

    这篇文章主要介绍了django 邮件发送模块smtp使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python装饰器常见使用方法分析

    python装饰器常见使用方法分析

    这篇文章主要介绍了python装饰器常见使用方法,结合实例形式分析了Python装饰器的功能及三种常见的装饰模式使用技巧,需要的朋友可以参考下
    2019-06-06

最新评论