当前位置: 首页 > 文档资料 > Python 学习笔记 >

迭代 Iterable

优质
小牛编辑
125浏览
2023-12-01

什么是迭代?

例子:

for a in b.value():
    pass

for x, y in de.items():
    pass

字符串也可以


for a in 'abcv':
    pass

如何判断是否可以迭代

请看代码

from collections import Iterable

isinstance('abc', Iterable)
True

这里就引出了模块这个东西,稍后会继续写,这里先简单的说一下

使用方法请看

from source import something

注意

  • source 不能加后缀名

双变量

for x, y in list:
    pass

这种行为在Python中很常见,就如同Python可以返回多个return 参数一样(返回的其实是一个省略的tuple),Python的双变量也是很常见,并且很好用的行为。

类比golang


for i := 0; i < count; i++ {

}

但是同时还可以,

for _, r := range s {
fmt.Printf("%c,", r)
    }
}
这也是一种多变量遍历的实例

迭代生成式


list(range(1, 11))
[1, 2, 3, ......11]

[x * x for x in range(1, 11)]

[1, 4, 9 ....]

第二种方法是 前面的是对于后面x的一种简单的计算,就是对于迭代的每个数字进行什么计算,然后返回回来就是这个意思。

当然你也可以使用


[x + x for x in range(1, 12)]

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22]

这都是可以的,就如同js中

[1, 2 ,....].filter(() => {
  x + x
})

是一样的意思,只不过,形式不同,仅此而已。

甚至你还可以这样


[x + y for x in 'abc' for y in 'bbadc' ]
[x + '=' + y for x, y in d.items()]

['x=y']

这些也都是可以的。可以说Python是非常灵活,并且资源非常丰富的一个编程语言。

总结一下这个迭代的写法


[x... for x in ...]

注意最前面不论x怎么样一定要有x,就算是直接输出x也要有x

举个例子


[s.lower() for x in ['add', ' DDff']]

结合for


l = ['adDd',1, 'SDD']
[s.lower() for x in l if isinstance(x, str)]