Python学习X --- 推导式

python频繁地使用迭代器,一般我们用for进行迭代。

使用zip()迭代

>>> names = ['n1','n2']
>>> ages = [18,17,19]
>>> for name, age in zip(names, ages):
...     print('name:', name, ' age:',age)
... 
name: n1  age: 18
name: n2  age: 17

显然zip会咋爱最短的序列“用完”时候停止。注意zip返回的是可迭代变量。所以你可以list()函数把它变成list!

list(zip(names,ages))

当然也可以用dict()把可迭代对象变成字典。

推导式

[expression for item in iterable]
[expression for item in iterable if condition]

a_list = [number*100 for number in range(1,6) if number % 2 == 1]

#也可以使用多重循环
rows = range(1,2)
cols = range(1,3)
ceils = [(row, col) for row in rows for col in cols]  #构建(row, col)元组

字典,集合类似。
注意:推导式只适用于列表,字典和集合。
元组没有推导式

>>> t = ('cc',12)
>>> t
('cc', 12)
>>> l = (v for v in t)
>>> l  #这里变成一个生成器对象了!并不是元组!
<generator object <genexpr> at 0x7f21059a3830>

所以你可以用for对生成器对象l进行迭代。
我想你可能更希望是这样!
既然list()可以把可迭代对象转换成列表,所以

l = list(v for v in t) # 话说你为啥不直接 l = list(t)呢?

因此,要对元组进行推导式迭代,先转换成list吧。

附加列表和元组的一点补充

列表

  1. list()可以将其他类型数据转换成列表,比如字符串,元组等等。
  2. 索引,切片,append, extend, insert, del, remove, pop, index, in, count, len, sort略。
  3. join()主要是将列表转换为字符串。
    比如
name = ['name1', 'name2']
','.join(name)

用=进行赋值,不过要用copy()进行复制

对于列表,元组,字典,集合,都是如此。
如果直接用=,是引用。。

a = [1,2]
b = a.copy()

元组

用()创建,有list大部分的函数,不过元素不可变。
元组与列表相比:
- 元组所占空间小
- 可以作为字典的键
- 命名元组可以作为对象的替代
- 函数的参数以元组的形式传递

字典和集合没什么好说的。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值