Python 3 中,列表推导、生成器表达式以及集合推导、字典推导中,有自己的局部作用域,表达式内部的变量和赋值只在局部起作用,表达式的上下文里的同名变量还可以正常引用,局部变量并不影响它们。
x = 'ABC'dummy = [ord(x) for x in x]print(x)# 'ABC'print(dummy)# [65, 66, 67]
但是在python2.x中,同名变量会相互影响。
Python 切片
基本语法
slice(stop)slice(start, stop[, step])
例子:
>>> a = list(range(10))>>> a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> s = slice(3)>>> sslice(None, 3, None)>>> a[s] # a[:3][0, 1, 2]>>> s = slice(2, 8)slice(2, 8, None)>>> a[s] # a[2:8][2, 3, 4, 5, 6, 7]>>> s = slice(2,8,2)slice(2, 8, 2)>>> a[s] # a[2:8:2][2, 4, 6]
特殊用法:
- a的拷贝
 
>>> slice(None)slice(None, None, None)>>> a[:][0, 1, 2, 3, 4, 5, 6, 7, 8, 9]# a[None:None]# a[slice(None)]
- 反向
 
>>> a = list(range(10))>>> a[::-1][9, 8, 7, 6, 5, 4, 3, 2, 1, 0]>>> a[::-2][9, 7, 5, 3, 1]>>> a[3::-1][3, 2, 1, 0]
小计:
- 当
step为正数的时候,start < end,否则结果为[] - 当
step为负数的时候,start > end,否则结果为[] 
-6 -5 -4 -3 -2 -10 1 2 3 4 5+---+---+---+---+---+---+| P | y | t | h | o | n |+---+---+---+---+---+---+0 1 2 3 4 5 6-6 -5 -4 -3 -2 -1
切片赋值
>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']>>> letters['a', 'b', 'c', 'd', 'e', 'f', 'g']>>> # replace some values>>> letters[2:5] = ['C', 'D', 'E']>>> letters['a', 'b', 'C', 'D', 'E', 'f', 'g']>>> # now remove them>>> letters[2:5] = []>>> letters['a', 'b', 'f', 'g']>>> # clear the list by replacing all the elements with an empty list>>> letters[:] = []>>> letters[]
