切片
Python 对字符串或者是集合的操作非常的灵活且简洁。
集合或者字符串后面加一个 [a:b:c]
a 表示起始位
b 表示截止位
c 表示逢 c 个元素取一
直接看代码:
1 | listtt = ['a','b','c','d','e'] |
结果是:
1 | ['a', 'b'] |
其中直接一个冒号就是复制原集合,别的都能好理解,很简洁。
对于字符串也是一个道理:
1 | print 'abcdefg'[::2] |
结果就不写了,和集合一样的。
对了,还可以倒着取值,记住倒数第一个的索引是 -1 就行,看个例子就懂了:
1 | listtt = ['a','b','c','d','e'] |
结果是 ['a', 'b', 'c', 'd']
注意一点,不论是正数还是倒数,起始位都要比截止位小,否则结果都是空的集合。
列表生成
我们知道有个 rang()
函数可以用来快速的生成集合。
现在我们需要生成一些有一定约束的集合,例如,0 到 100 的三方组成的集合。
1 | for x in range(0,10)] [x * x * x |
前面写个函数,后面加个循环就好了。
还可以在后面加个判断条件:
1 | for x in range(0,10) if x%3==0] [x*x*x |
还有种,多重循环,两两交互的:
1 | python |
代码都非常的简洁,但是格式千万不能错!
生成器
generator , 这不就是 ES 6 中提供的一种异步编程解决方案么。果然语言思想都是互通的,相互学习的啊。
创建一个 generator 的一种简单方式就是:
1 | for x in range(10)) g = (x * x |
和列表生成有所不同的就是,它是小括号。
原理结构方面和 JS 的差不多。
都是可以通过 next()
方法一个接一个的迭代,或者是通过 for
循环直接遍历。
其中 yield
关键字也是和 JS 中的一样(类似于 return
,但是会记录上次的循环层数)。
有点神奇 = = 。
慢慢的感受到了 Python 的简洁和强大。