字符串
字符串是不可变类型,改变字符串其中的一个元素需要创建一个新的字符串
集合
一组无序排列的可哈希的值。扩展阅读:python(哈希性hashable和不可改变性imutable)
支持集合关系测试
成员关系测试:in;not in;迭代;
不支持:索引、元素获取、切片;
集合没有特定语法格式,只能通过工厂方法创建;
集合类型: set(), frozenset()
访问集合中的值:
s = set('cheeseshop')
for char in s:
print s
容器、类型、对象
-
容器类型(list, dict, tuple)可以跨行定义
l = [1,
2,
3]
print l # l = [1, 2, 3] -
所有对象都有引用计数,为该对象新增加引用一个变量名,或放入一个容器类型中,都会增加引用计数;引用计数为0时,python会回收该对象
import sys
name = 'black'
sys.getrefcount(name)
>>>2 # 调用getrefcount()本身会引用一次该对象
sys.getrefcount(name) - 1
>>>1 # 获取正确调用,应减1
hello = 'black'
sys.getrefcount(name)
>>>3 -
list, dict 都支持浅复制和深复制
浅复制实际是对原对象的引用。以下均为浅复制:(1)完全切片操作[:];(2)利用工厂函数,比如 list(),dict()等;(3)使用 copy 模块的 copy 函数.;
深复制:创建一个新容器对象,所有对象元素也是全新的;
import copy
person = ['name', ['savings', '100']]
hubby = person
wifey = copy.deepcopy(person)
for i in person, hubby, wifey:
print id(i),
>>>34235336 34235336 34255880
- python中的所有对象都是‘第一类对象’
- 所有序列对象都可迭代
- 所有序列都支持的操作和方法
- s[i]
- s[i:j]
- s[i:j:stride]
- len(s)
- max(s)
- min(s)
- sum(s)
- all(s)
- any(s)
- s1 + s2
- s1 * N
- obj in s1; obj not in s1
网友评论