您的位置:首页 > 其它

容器数据类型特性总结18

2015-10-28 15:06 429 查看
一,容器、类型、对象
1.列表元素和字典自变量可以多行输入,没有任何元素时是不可以的;

例如:
In [75]: l1 = [1,
....: 2,
....: 3,
....: ]

In [76]: print l1
[1, 2, 3]
2.所以对象都有引用计数
分配新名称会增加计数,删除对象引用则会减少计数;

例如:
In [78]: name = "black"

In [79]: import sys
sys        sysconfig  syslog

In [79]: import sys

In [80]: sys.
sys.api_version            sys.exit                   sys.last_traceback         sys.ps2
sys.argv                   sys.exitfunc               sys.last_type              sys.ps3
sys.builtin_module_names   sys.flags                  sys.last_value             sys.py3kwarning
sys.byteorder              sys.float_info             sys.long_info              sys.setcheckinterval
sys.call_tracing           sys.float_repr_style       sys.maxint                 sys.setdlopenflags
sys.callstats              sys.getcheckinterval       sys.maxsize                sys.setprofile
sys.copyright              sys.getdefaultencoding     sys.maxunicode             sys.setrecursionlimit
sys.displayhook            sys.getdlopenflags         sys.meta_path              sys.settrace
sys.dont_write_bytecode    sys.getfilesystemencoding  sys.modules                sys.stderr
sys.exc_clear              sys.getprofile             sys.path                   sys.stdin
sys.exc_info               sys.getrecursionlimit      sys.path_hooks             sys.stdout
sys.exc_type               sys.getrefcount            sys.path_importer_cache    sys.subversion
sys.excepthook             sys.getsizeof              sys.platform               sys.version
sys.exec_prefix            sys.gettrace               sys.prefix                 sys.version_info
sys.executable             sys.hexversion             sys.ps1                    sys.warnoptions

In [80]: sys.get
sys.getcheckinterval       sys.getfilesystemencoding  sys.getrefcount
sys.getdefaultencoding     sys.getprofile             sys.getsizeof
sys.getdlopenflags         sys.getrecursionlimit      sys.gettrace

In [80]: sys.getre
sys.getrecursionlimit  sys.getrefcount

In [80]: sys.getrefcount(name)
Out[80]: 2

In [94]: hello="black"

In [95]: sys.getrefcount(name)
Out[95]: 3

In [96]: del(hello)    //删除对象引用减少计数

In [97]: sys.getrefcount(name)
Out[97]: 2
3.列表和字典都支持两种类型的复制操作

浅复制:创建一个新对象,包含的原来的对象引用,指向的是同一个位置;
深复制:创建一个新对象,递归复制原来包含的所有对象;

深复制可使用copy模块中的deepcopy()实现。

4.Python中的所以对象都是“第一类的”

这意味着使用标识符命名的所有对象都具有相同状态,于是,能够命名所以对象都可以直接当数据进行处理。

例如:

In [6]: a = 4.0

In [7]: b = 3

In [8]: a / b
Out[8]: 1.3333333333333333

In [9]: a // b
Out[9]: 1.0
5.所有序列都支持迭代

序列是索引为非负整数的有序对象的集合;

序列可以修改,支持原处的插入、替换、删除等操作;

字串和元组不支持原处修改,但序列和元组能包含任意的Python对象序列(容器的特性);

6.所有序列都支持的操作

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 s

7.可变序列的操作,操作本身

s1[index] = value :元素赋值

s1[i:j] = t :切片赋值

del s1[index]

del s1[i:j]

del s1[i:j:stride]

本文出自 “Jessen Liu的博文” 博客,请务必保留此出处http://zkhylt.blog.51cto.com/3638719/1707272
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: