首页 > 其他 > 详细

第四篇、编码解码 列表、元祖

时间:2017-03-05 21:04:30      阅读:413      评论:0      收藏:0      [点我收藏+]

一、解码与编码

技术分享
Def decode(self,encoding-None,errors=None):
    “”解码
    s.decode([encoding[,errors])  →object

Def encode(self,encoding=None,errors=None):
    “””编码  针对unicode 
View Code

技术分享

技术分享
>>> 
\xce\xde
>>> str1 =\xce\xde
>>> print str1
无
>>> str1.decode(gbk).encode(utf-8)  →解码成unicode之后编码成utf-8
\xe6\x97\xa0
>>> print str1.decode(gbk).encode(utf-8)
鏃
代码如下: 中文是gbk

二、列表基础

1、

技术分享
List = [] 这是空列表
Del list[2] 这个是删除下标为2的列表数据
View Code

2、

技术分享
添加列表   往列表的末尾添加数据
Def append(self,p_object):
    l.append(object)
View Code

3、

技术分享
列表中元素出现的次数
Def count(self,value):
    L.count(value):
View Code

4、

技术分享
列表的扩展,就相当于两个列表相加,注意这里只是扩展,内存地址,也就是id不变
Def extend(self,iterable):
    L.extend(iterable)
代码
>>> list2 = [22,33]
>>> list.extend(list2)
>>> list
[1, 22, 33]
View Code

5、

技术分享
返回列表中元素第一次出现的位置的下标
Def index(self,value,start=None,stop=None):
    L.index(value,[start,[stop]])
View Code

6、

技术分享
在列表的指定下标位置插入数据
Def insert(self,index,p_object):
    L.insert(index,object)
代码如下:
>>> list
[1, 22, 33]
>>> list.insert(0,"a")
>>> list
[a, 1, 22, 33]
View Code

7、

技术分享
删除并返回指定下标的值,如果没有指定下标,最后一个返回并且删除
Def pop(self,index=None):
    L.pop([index])
代码如下:
>>> list
[a, 1, 22, 33]
>>> list.pop()
33
>>> list
[a, 1, 22]
View Code

8、

技术分享
指定值然后移除,如果列表中有很多这个值,那么只移除第一个
Def remove(self,value):
    L.remove(value)
代码如下:
>>> list
[a, 1, 22, 22]
>>> list.remove(22)
>>> list
[a, 1, 22]
View Code

9、

技术分享
列表数据的反转
Def reverse(self):
    L.reverse()
代码如下:
>>> list
[a, 1, 22]
>>> list.reverse()
>>> list
[22, 1, a]
View Code

10、

技术分享
排序中文unicode比较,英文acicc码比较,数字就按照数字比较
Def sort(self,cmp=None,key=None):
    L.sort(cmp=None,Key=None)
View Code

三、元祖及常用方法

1 首先介绍字典:
2 字典name = {”key1”:value,”key2”:value}→键值对
3 字典中的值是可以重复的,但是键不能重复
4 字典添加
5 dic[2]=1    那么这个字典就添加了值
6 什么可以做字典中的键呢? 字典中的键就是不能变的数据就可以比如元祖

字典的循环:

For key in dic:print key,dic[key]

字典和列表的赋值就相当于生成了一个软连接,而并不是生成一个内存地址。原因是字典和列表的数据一般都是很大的,所以,这样做会节省内存空间

1、

技术分享
创建字典的时候清除里面的内容
Def clear(self):
    d.clear()
View Code

2、

技术分享
Def copy(self):        浅拷贝
    d.copy()
深copy需要导入模块,完全独立的复制,就是完全独立了
Import copy
F = copy.deepcopy(dict)

代码例子如下:
>>> for i in range(5):d[i]=[]
...
>>> d
{0: [], 1: [], 2: [], 3: [], 4: []}
>>> c[1].append({"b":1})
>>> d[1].append({"b":1})
>>> d
{0: [], 1: [{b: 1}], 2: [], 3: [], 4: []}
>>> d[1]
[{b: 1}]
>>> d[1][0]
{b: 1}
>>> d[1][0][b]
View Code

3、

技术分享
获取字典中key的值,如果这个值没有就返回None,如果没有这个key对应的值,可以返回一个指定的值

Def get(self,k,d=None):
    d.get(k[,d])

代码例子:
>>> dic = {"k1":1234}
>>> dic.get("k1")
1234
>>> dic.get("k2")
>>> print dic.get(k2)
None
>>> print dic.get(k2,ok)
ok
View Code

4、

技术分享
把字典中的所有的key分给value
def fromkeys(S, v=None): # real signature unknown; restored from __doc__
    """
    dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.
    v defaults to None.
    """
    pass
代码例子:
>>> a = {}
>>> a.fromkeys([1,2,3],t)
{1: t, 2: t, 3: t}
View Code

5、

技术分享
检查字典中有没有键对应的这个值,有就返回true,没有就返回false
方法一
def has_key(self, k): # real signature unknown; restored from __doc__
    """ D.has_key(k) -> True if D has a key k, else False """
    return False
代码如下:
>>> b = {1:2,3:4}
>>> b.has_key(3)
True
>>> b.has_key(1)
True
>>> b.has_key(2)
False
方法二
Key in dic
>>> b = {1:2,3:4}
>>> 3 in b
True
>>> 1 in b
True
>>> 2 in b
False
View Code

6、

技术分享
把字典转换成列表
def items(self): # real signature unknown; restored from __doc__
    """ D.items() -> list of D‘s (key, value) pairs, as 2-tuples """
    return []
>>> b.items()
[(1, 2), (3, 4)]
View Code

7、

技术分享
迭代
def iteritems(self): # real signature unknown; restored from __doc__
    """ D.iteritems() -> an iterator over the (key, value) items of D """
    pass

def iterkeys(self): # real signature unknown; restored from __doc__
    """ D.iterkeys() -> an iterator over the keys of D """
    pass

def itervalues(self): # real signature unknown; restored from __doc__
    """ D.itervalues() -> an iterator over the values of D """
    pass
View Code

8、

技术分享
把当前所有的key打印出来
def keys(self): # real signature unknown; restored from __doc__
    """ D.keys() -> list of D‘s keys """
    return []
代码如下:
>>> b
{1: 2, 3: 4}
>>> b.keys()
[1, 3]
View Code

9、

技术分享
删除指定key的值的字典:
def pop(self, k, d=None): # real signature unknown; restored from __doc__
    """
    D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
    If key is not found, d is returned if given, otherwise KeyError is raised
    """
    pass
代码如下:
>>> b
{1: 2, 3: 4}
>>> b.pop(1)
2
>>> b
{3: 4}
View Code

10、

技术分享
按照生成的字典内存顺序,从开始删除
def popitem(self): # real signature unknown; restored from __doc__
    """
    D.popitem() -> (k, v), remove and return some (key, value) pair as a
    2-tuple; but raise KeyError if D is empty.
    """
    pass
>>> c = b.fromkeys(range(100),[])
>>> c.popitem()
(0, [])
>>> c.popitem()
(2, [])
>>> c.popitem()
(3, [])
View Code

11、

技术分享
在字典中,如果这个字典的值存在,就什么不返回,如果不存在就返回这个值
def setdefault(self, k, d=None): # real signature unknown; restored from __doc__
    """ D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D """
    pass
代码如下:
>>> b = {1:2,3:4}
>>> b.setdefault(4)
>>> b
{1: 2, 3: 4, 4: None}
>>> b.setdefault(5,6)
6
>>> b
{1: 2, 3: 4, 4: None, 5: 6}
View Code

12、

技术分享
把两个字典整合起来。比如a字典和b字典。如果a字典含有的key和b字典含有的key一样但是值不一样,那么b字典中的key值会把a字典中的key值替换掉。并且b所有的值都会在a字典中
def update(self, E=None, **F): # known special case of dict.update
    """
    D.update([E, ]**F) -> None.  Update D from dict/iterable E and F.
    If E present and has a .keys() method, does:     for k in E: D[k] = E[k]
    If E present and lacks .keys() method, does:     for (k, v) in E: D[k] = v
    In either case, this is followed by: for k in F: D[k] = F[k]
    """
    pass
代码例子:
>>> c = {1:2,3:4}
>>> d = {"a":2,"b":5,3:6}
>>> c.update(d)
>>> c
{a: 2, 1: 2, 3: 6, b: 5}
View Code

13、

技术分享
打印所有的值
def values(self): # real signature unknown; restored from __doc__
    """ D.values() -> list of D‘s values """
    return []
代码例子:如上面的字典例子
>>> c.values()
[2, 2, 6, 5]
View Code

四、集合及关系运算

>>> a = range(5,10)

>>> a

[5, 6, 7, 8, 9]

>>> b =range(7,12)

>>> b

[7, 8, 9, 10, 11]

>>> a,b

([5, 6, 7, 8, 9], [7, 8, 9, 10, 11])

怎么取a和b的交集呢?怎么让a和b变成一个集合?

1、

技术分享
下面就是怎么变成一个集合
>>> set(a)
set([8, 9, 5, 6, 7])
View Code

2、

技术分享
那和a的区别是什么呢?如下
>>> a.append(6)
>>> a
[5, 6, 7, 8, 9, 6]
>>> set(a)
set([8, 9, 5, 6, 7])
可以看到上面的区别是集合可以去重以及无序的
View Code

3、

技术分享
集合的作用
>>> d=set(b)→把他们变成集合
>>> c &d   →  这个是取交集
set([8, 9, 7])
>>> c|d        →这个是取并集
set([5, 6, 7, 8, 9, 10, 11])
>>> c^d        →这个是取反交集
set([5, 6, 10, 11])
>>> c-d        →取出c集合中有的,但是d集合没有的元素
set([5, 6])
>>> d-c        →取出d集合中有的,但是c集合没有的元素
set([10, 11])

>>> e=set([8,10])
>>> e
set([8, 10])
>>> e.issubset(d)    →判断e是否是d的子集,如果是就返回的是bool
True

>>> e.issuperset(d)        →判断e是否是d的父集,返回的是bool判断
False
View Code

4、

技术分享
字典删除按照内存,从前往后删除
def pop(self, *args, **kwargs): # real signature unknown
    """
    Remove and return an arbitrary set element.
    Raises KeyError if the set is empty.
    """
    pass
代码如下:
>>> d
set([8, 9, 10, 11, 7])
>>> d.pop()
8
>>> d
set([9, 10, 11, 7])
>>> d.pop()
9
>>> d
set([10, 11, 7])
View Code

5、

技术分享
可以在集合中指定数据删除
def remove(self, *args, **kwargs): # real signature unknown
    """
    Remove an element from a set; it must be a member.
    
    If the element is not a member, raise a KeyError.
    """
    pass
代码如下:
>>> d.remove(7)
>>> d
set([10, 11])
View Code

6、

技术分享
两个集合中如果有不同的元素,整合到一块,如果有重复的元素,就不添加
def update(self, *args, **kwargs): # real signature unknown
    """ Update a set with the union of itself and others. """
    pass
>>> d.remove(7)
>>> d
set([10, 11])
View Code

7、

技术分享
判断一个集合是否是另一个集合的父类
def issuperset(self, *args, **kwargs): # real signature unknown
    """ Report whether this set contains another set. """
    pass
View Code

8、

技术分享
判断一个集合是否是另一个集合的子类
def issubset(self, *args, **kwargs): # real signature unknown
    """ Report whether another set contains this set. """
    pass
View Code

计数器(counter)

Counter是对字典类型的补充,用于追踪值出现的次数

 

第四篇、编码解码 列表、元祖

原文:http://www.cnblogs.com/pyrene/p/6506552.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!