sequence(序列)是一组有顺序的元素的集合
(严格的说,是对象的集合,但鉴于我们还没有引入“对象”概念,暂时说元素)
序列可以包含一个或多个元素,也可以没有任何元素。
序列有两种:tuple(定值表; 也有翻译为元组) 和 list (表)
>>>s1 = (2, 1.3, 'love', 5.6, 9, 12, False) # s1是一个tuple
>>>s2 = [True, 5, 'smile'] # s2是一个list
>>>print s1,type(s1)
>>>print s2,type(s2)
tuple和list的主要区别在于,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更。
元素的引用:
序列元素的下标从0开始:
>>>print s1[0]
>>>print s2[2]
其他引用方式
范围引用: 基本样式[下限:上限:步长]
>>> print s1[:5] //下表从零到4
(2, 1.3, 'xy', 5.6, 9.0)
>>> print s1[2:] //从下表2开始
('xy', 5.6, 9.0, False)
>>> print s1[0:5:2] //从下表0到4 步长为2
(2, 'xy', 9.0)
>>> print s1[3:0:-1] //从下表3到0 步长为-1
(5.6, 'xy', 1.3)
从上面可以看到,在范围引用的时候,如果写明上限,那么这个上限本身不包括在内。
尾部元素引用
>>> print s1[-1] //最后一个
False
>>> print s1[-2] //倒数第2个
9.0
>>> print s1[0:-1] //begin to end
(2, 1.3, 'xy', 5.6, 9.0)
字符串是元组
字符串是一种特殊的元素,因此可以执行元组的相关操作。>>> str ='abcde'
>>> print str[1:3]
bc
>>>
if语句之后的冒号
以四个空格的缩进来表示隶属关系, Python中不能随意缩进
if <条件1>:
statement
elif <条件2>:
statement
elif <条件3>:
statement
else:
statement
i = 5
if i > 1:
print 'i bigger than 1'
print 'good'
if i > 2:
print 'i bigger than 2'
print 'even better'
输出:
i bigger than 1
good
i bigger than 2
even better
循环语句:
range() //idx = range(5) idx=[0,1,2,3,4]
for 元素 in 序列:
while 条件:
continue
break
a**2 //是a的平方
专用下划线标识符:
Python 用下划线作为变量前缀和后缀指定特殊变量。
1. _xxx 不用'from module import *'导入
2. __xxx__系统定义名字
3. __xxx 类中的私有变量名
is 是关键字
obj1 is obj2 obj1 和obj2 是同一个对象
obj1 is not obj2 obj1 和obj2 不是同一个对象
str和repr的区别:
repr返回的是一个对象的“官方”字符串表示, 也就是说绝大多数情况下可以通过求值运算(使用eval()内建函数)重新得到该对象。
str() 致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值, 但很适合用于 print 语句输出。
也就是说 repr() 输出对 Python 比较友好, 而str()的输出对人比较友好。
python不支持的类型:
1.char或byte
2.指针:python替你管理内存,因此没有必要访问指针。
3.int,short,long python的整数实现等同于c语言的长整数
4.float,double python只支持double。
** 优先级高于左侧的 -
>>> -3 ** 2 # ** 优先级高于左侧的 -
-9
核心模块: copy
我们刚才描述的浅拷贝和深拷贝操作都可以在copy 模块中找到.其实copy 模块中只有两
个函数可用:copy()进行浅拷贝操作,而deepcopy()进行深拷贝操作.
集合(sets)有两种不同的类型,可变集合(set) 和 不可变集合(frozenset)。
Python 并不会因字典中的键存在冲突而产生一个错误,它不会检查键的冲突是因为,如果真这样做的话,在每个键-值对赋值的时候都会做检查,这将会占用一定量的内存。
next函数和next方法
在Python 2.7.5中你两种方法都可以使用,而在Python 3却只能使用next
函数了!
# Python 2
>>> my_generator = (letter for letter in 'abcdefg')
>>> my_generator.next()
'a'
>>> next(my_generator)
'b'
# Python 3
>>> my_generator = (letter for letter in 'abcdefg')
>>> next(my_generator)
'a'
Type中的name:
type(num).__name__ 应该是双下划线
__init__()和__del__ 这里内建函数都是双下划线