当前位置:   article > 正文

Python学习之推导式的用法(3)_使用集合推导式生成一个由元组元素构成的集合

使用集合推导式生成一个由元组元素构成的集合

Python推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体,某种程度上类似于java的对数据的处理方式。

它支持多种数据结构的推导式:

从字典里查了下,推导式的英语说法是derived types,comprehension, 以为衍生结构。

列表推导式:list comprehension

字典推导式:dict comprehension

集合推导式:set comprehension

元组推导式:tuple comprehension

以下逐个用例子来看下这些推导式是怎么处理数据的。

1. 列表推导式

  1. def derv_type():
  2. # 1.list
  3. names = ['bob', 'tom', 'alie', 'jerry', 'wendy', 'smith']
  4. new_names = [name.upper() for name in names if len(name) > 3]
  5. print(new_names)
  6. multiples = [i for i in range(30) if i % 3 == 0]
  7. print(multiples)

输出:['ALIE', 'JERRY', 'WENDY', 'SMITH']
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

2. 字典推导式

  1. # 2.dict
  2. dic_hobby = ['basketball', 'badminton', 'pingpong', 'swimming']
  3. new_hobby = {key: len(key) for key in dic_hobby}
  4. print(new_hobby)
  5. dict_data = {x: x ** 2 for x in (2, 4, 8)}
  6. print(dict_data)
  7. print(type(dict_data))

输出:{'basketball': 10, 'badminton': 9, 'pingpong': 8, 'swimming': 8}
{2: 4, 4: 16, 8: 64}
<class 'dict'>

3. 集合推导式

  1. # 3. set
  2. set_new = {i ** 2 for i in (1, 2, 3)}
  3. print(set_new)
  4. one = {x for x in 'abracadabra' if x not in 'abc'}
  5. print(one)
  6. print(type(one))

输出:{1, 4, 9}
{'d', 'r'}
<class 'set'>

4. 元组推导式

  1. # 4. tuple comprehension returns one generator object rather than other data types
  2. two = (x for x in range(1, 12))
  3. t_two = tuple(two)
  4. print(two) # <generator object derv_type.<locals>.<genexpr> at 0x0000014E75EFE510>
  5. print(type(two)) # <class 'generator'>
  6. print(t_two(1)) # tuple type object is not callable

输出:<generator object derv_type.<locals>.<genexpr> at 0x00000224214DE510>
<class 'generator'>

元组数据类型比较特殊,它返回的是个生成器对象,即generator, 且元组类型是用圆括号括起来的,不像集合是用大括号括起来,字典用中括号,列表用中括号。

以上就是python推导式的用法,可以用在对数据进行二次处理、筛选。多多练习,因为知易行难。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/207937
推荐阅读
相关标签
  

闽ICP备14008679号