py17day02

一、python数据类型str

  -str类方法:

    capitalize():首字母大写

>>> 'elaine'.capitalize()
'Elaine'

    自身name变量不会变,新生成一个值

>>> name = 'elaine'
>>> v = name.capitalize()
elaine
>>> print(name,v)
elaine Elaine

    casefold():所有大写变小写(比lower()厉害,适用多种语言)

>>> 'Elaine'.casefold()
'elaine'

      center(width, fillchar=None):文本居中

>>> 'Elaine'.center(20,'*')
'*******Elaine*******'

    count(sub, start=None, end=None):传入子序列在字符串中出现的次数

>>> 'Dylan&Elaine'.count('a',0,10)
2

    endswith(suffix, start=None, end=None)

>>> 'Elaine'.endswith('e')
True

    startswith(prefix, start=None, end=None)

>>> 'Elaine'.startswith('E')
True

    expandtabs(tabsize=8):找到制表符(tab)进行替换(包含tab前的字符)

p = 'name:\tDylan\tElaine\nage\t29\t30'.expandtabs(20)
print(p)
name:               Dylan               Elaine
age                 29                  30

    find(sub, start=None, end=None):找到指定子序列索引,找不到返回-1

>>> 'Elaine'.find('n',-2,-1)
4
>>> 'Elaine'.find('r',-2,-1)
-1

    index(sub, start=None, end=None):找到指定子序列索引,找不到报错

    format(*args, **kwargs):字符串格式化

    format_map(mapping):字符串格式化

>>> tp1 = "My name:%s age:%s gender:%s"%('Elaine',30,'girl')
>>> print(tp1)
My name:Elaine age:30 gender:girl
>>> tp2 = "My name:{0} age:{1} gender:{2}".format('Elaine',30,'girl')
>>> print(tp2)
My name:Elaine age:30 gender:girl
>>> tp3 = "My name:{name} age:{age} gender:{gender}".format(name='Elaine',age=30,gender='girl')
>>> print(tp3)
My name:Elaine age:30 gender:girl
>>> tp4 = "My name:{name} age:{age} gender:{gender}".format_map({'name':'Elaine','age':30,'gender':'girl'})
>>> print(tp4)
My name:Elaine age:30 gender:girl

    isalnum():如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

>>> 'Elaine521'.isalnum()
True
>>> 'Elaine@521'.isalnum()
False

    isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False

>>> 'Elaine'.isalpha()
True
>>> 'Elaine521'.isalpha()
False

    isdecimal(self),isdigit(self),isnumeric(self):判断是否是数字

>>> '123'.isdecimal()
True
>>> '123②'.isdecimal()
False
>>> '123②'.isdigit()
True
>>> '123②二'.isdigit()
False
>>> '123②二'.isnumeric()
True

     isidentifier():是否是标识符(是否可用作变量名)

>>> '9elaine'.isidentifier()
False

    isupper(),islower():是否全部是大,小写

>>> 'ELAINE'.isupper()
True
>>> 'elaine'.islower()
True

    lower(),upper():全部变小写,大写

    isprintable():是否包含隐藏

>>> 'dylan\nelaine'.isprintable()
False 

    isspace():是否全是空格

>>> '    '.isspace()
True

    join(iterable):拼接(传入可迭代元素)

>>> '|'.join('Elaine')
'E|l|a|i|n|e'
>>> '|'.join(['Dylan','Elaine'])
'Dylan|Elaine'

    ljust(width, fillchar=None):左填充

    rjust(self, width, fillchar=None):右填充

>>> 'Elaine'.ljust(20,'*')
'Elaine**************'
>>> 'Elaine'.rjust(20,'*')
'**************Elaine'

     maketrans(*args, **kwargs),translate(table):用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

    注:两个字符串的长度必须相同,为一一对应的关系。

>>> s1 = str.maketrans('dylan','57521')
>>> 'dylan'.translate(s1)
'57521'

    partition(self, sep):分割字符串,保留分割元素。

>>> 'E|lai|en'.partition('|')
('E', '|', 'lai|en')
>>> 'E|lai|en'.rpartition('|')
('E|lai', '|', 'en')

    replace(self, old, new, count=None):方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

>>> 'elaine'.replace('e','d',1)
'dlaine'

    splitlines(self, keepends=None): 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。

>>> 'ab c\n\nde fg\rkl\r\n'.splitlines()
['ab c', '', 'de fg', 'kl']
>>> 'ab c\n\nde fg\rkl\r\n'.splitlines(True)
['ab c\n', '\n', 'de fg\r', 'kl\r\n']
>>> 

    strip(chars=None):方法用于移除字符串头尾指定的字符(默认为空格,还会移除换行符等)。

>>> '\telaine\n'.strip()
'elaine'

    swapcase():用于对字符串的大小写字母进行转换。

>>> 'Elaine'.swapcase()
'eLAINE'

    zfill(width):指定字符串的长度。原字符串右对齐,前面填充0。

>>> 'Elaine'.zfill(20)
'00000000000000Elaine'

     __add__(*args, **kwargs):私有方法。

    如:

      s1 = 'dylan' 

      s2 = 'elaine'

      执行s1 + s2时,执行的就是 __add__方法。

 

    encode(encoding='utf-8', errors='strict'):方法以指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案。该方法返回编码后的字符串,它是一个 bytes 对象。

      -encoding -- 要使用的编码,如: UTF-8。

      -errors -- 设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。

>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('gbk')
b'\xd6\xd0\xce\xc4'

 

 

二、python数据类型int

  -int类方法:

    bit_length(self):当前整数的二进制表示,最少位数

    6的二进制为:110

>>> age = 6
>>> age.bit_length()
3

    to_bytes(self, length, byteorder, *args, **kwargs):将整数转化为16进制的字节对象(bytes,'\x'代表16进制)

      -length:表示至少以多少byte表示

      -byterorder:有'little','big' 参数

>>> age = 15
>>> age.to_bytes(5,byteorder='little')
b'\x0f\x00\x00\x00\x00'
>>> age.to_bytes(5,byteorder='big')
b'\x00\x00\x00\x00\x0f'

三、python数据类型bool

   空列表,空字符串,空值,0的bool值均为False

四、python数据类型list

  -list类方法:

    append(self, p_object):追加

>>> L1 = ['a','b','c','d']
>>> L1.append('e')
>>> print(L1)
['a', 'b', 'c', 'd', 'e']

    clear(self):清空

>>> L1.clear()
>>> print(L1)
[]

    copy(self):拷贝(浅拷贝)

>>> L1 = ['a','b','c','d']
>>> L2 = L1.copy()
>>> print(L2)
['a', 'b', 'c', 'd']

    count(self,value):计数

>>> L1 = ['a','b','c','d','a']
>>> print(L1.count('a'))
2

    extend(self,iterable):扩展原列表

>>> L1 = ['a','b','c','d']
>>> L2 = L1.extend(['e','f','g','h'])
>>> print(L2)
None
>>> print(L1)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

    index(self, value, start=None, stop=None):查找元素索引

>>> L1 = ['a','b','c','d']
>>> L1.index('a')
0

    pop(self, index=None):删除并获取元素

>>> L1 = ['a','b','c','d']
>>> v = L1.pop(2)
>>> print(v)
c
>>> print(L1)
['a', 'b', 'd']

    remove(self,value):删除元素

>>> L1 = ['a','b','c','d']
>>> L1.remove('c')
>>> print(L1)
['a', 'b', 'd']

    reverse(self):翻转列表

>>> L1 = ['a','b','c','d']
>>> L1.reverse()
>>> print(L1)
['d', 'c', 'b', 'a']

    sort(self, key=None, reverse=False):排序

      -key:定义一个方法,按照此方法排序

      -reverse:默认为False

>>> L1 = ['aaaaa','bbb','ccccccc','dddd']
>>> L1.sort(key=len,reverse=True)
>>> print(L1)
['ccccccc', 'aaaaa', 'dddd', 'bbb']

    额外:

      -list中元素个数

>>> L1 = ['a','b','c','d']
>>> L1.__len__()
4
>>> len(L1)
4

      -insert(self, index, p_object):插入元素

>>> L1 = ['a','b','c','d']
>>> L1.insert(1,'A')
>>> print(L1)
['a', 'A', 'b', 'c', 'd']

      -del list[x:x]:批量删除元素

['a', 'A', 'b', 'c', 'd']
>>> del L1[1:3]
>>> print(L1)
['a', 'c', 'd']

  

  -补充内容

    -range:

      在python2.7中:range会直接生成list

      

      在python3中:不会直接生成list,只有循环迭代时,才一个一个生成

      

 

#
在Python的序列中(列表和元组都是序列),都可以可以使用切片操作:  sequence[start : end : step] 前面两个好理解,分别为开始索引的位置和结束索引的位置(Python中提供两种索引:从左向右 0 ..... index-1   从右向左 -1 .... -index),关键是在这个step的含义。
其实呢,step在这里表示的是切片的步长(step不能为0,默认为1):
       若  step > 0, 则表示从左向右进行切片。此时,start必须小于end才有结果,否则为空。例如: s[0,: 5: 2]的结果是'ace'
       若  step < 0, 则表示从右向左进行切片。 此时,start必须大于end才有结果,否则为空。列如: s[5: 0: -1]的结果是'fedcb'
         那么,s[::-1]表示从右往左,以步长为1进行切片; s[::2] 表示从左往右以步长为2进行切片

      Python中的range()函数和序列的这个特性非常相像。
      range()函数可以说是一个生成序列的函数,例如:
range(5) : 0, 1, 2, 3, 4
range(1, 5):1, 2, 3, 4
上面两个例子比较容易理解,range()函数中也有最后一个参数step,比如:range(0,5, 2)则表示0,2,4
range(5,0,-2)表示(5,3,1)可以这么来理解:首先 ,range(0, 5)会生成一列数(表示为0,1,2,3,4,5):  由于step为-2,会从右向左进行切片步长为2,依次取索引为5,3,1的数,索引为0的不包括在内。
关于python中序列切片步长的解析

 

>>> r = range(10)
>>> from collections import Iterable,Iterator
>>> isinstance(r, Iterator)
False
>>> isinstance(r, Iterable)
True

       一些range用法:

>>> L1 = ['a','b','c','d']
>>> for i in range(len(L1)):
...     print(L1[i])
...     
a
b
c
d
>>> for i in range(1,11,2):
...     print(i)
...     
1
3
5
7
9

 

    -enumerate:相比range(),enumerate会额外生成一列有序数字

>>> L1 = ['a','b','c','d']
>>> for i in enumerate(L1,100):
...     print(i)
...     
(100, 'a')
(101, 'b')
(102, 'c')
(103, 'd')
>>> for num,ele in enumerate(L1,100):
...     print(num,ele)
...     
100 a
101 b
102 c
103 d

 

          

      

 

五、python数据类型tuple

  -tuple类方法:

    count(self, value):

>>> T1 = ('a','b','c','d','e','a','b',)
>>> T1.count('a')
2

    index(self, value, start=None, stop=None):获取到元素的第一个索引

>>> T1 = ('a','b','c','d','e','a','b',)
>>> T1.index('a')
0

    额外:元组里的元素不可修改

>>> T1 = ('a','b',['1','2','3'],'d')
>>> T1[2] = 'c'    #修改后报错
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> T1[2] = ['4','5','6']
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> T1[2][0] = ['b']    #修改后不报错 
>>> print(T1)
('a', 'b', [['b'], '2', '3'], 'd')

    创建元组时在最后一个元素后附加

>>> T1 = (a)
>>> print(T1) a >>> T1 = ('a',) >>> print(T1) ('a',)

    额外:

      元组支持索引,切片,for循环

六、python数据类型dict

  -dict类方法:

    clear(self):

>>> D1 = {'a':1,'b':2,'c':3,'d':4,'e':5}
>>> D1.clear()
>>> print(D1)
{}

    copy(self):

>>> D1 = {'a':1,'b':2,'c':3,'d':4,'e':5}
>>> D2 = D1.copy()
>>> print(D2)
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}

    get(self, k, d=None):

>>> v = D1.get('a')    #根据key值获取指定value>>> print(v)
1
>>> v = D1.get('a1')    #不存在的key不报错
>>> print(v)
None
>>> v = D1.get('a1',111)    #不存在的key,返回设置的默认值111>>> print(v)
111

    pop(self, k, d=None):

>>> D1 = {'a':1,'b':2,'c':3,'d':4,'e':5}
>>> D1.pop('b')    #删除key对应的value,并获取value
2
>>> print(D1)
{'a': 1, 'c': 3, 'e': 5, 'd': 4}
>>> D1.pop('b',3)    #删除key不存在时,获取设置的默认值3
3
>>> print(D1)
{'a': 1, 'c': 3, 'e': 5, 'd': 4}    #删除key不存在时,不设置默认值会报错
>>> D1.pop('b')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: 'b'
>>> D1 = {'a':1,'b':2,'c':3,'d':4,'e':5}
>>> D1.pop('b',3)    #删除key存在,获取value
2

    popitem(self):随机删除键值对,并获取删除的键值对(类型为元组)

>>> D = {'a':1,'b':2,'c':3,'d':4,'e':5}
>>> D.popitem()
('a', 1)

    setdefault(self, k, d=None):增加,如果存在不作操作

>>> D.setdefault('f',6)
6
>>> print(D)
{'a': 1, 'f': 6, 'b': 2, 'd': 4, 'c': 3, 'e': 5}

    update(self, E=None, **F):批量增加或修改

>>> D = {'k1':'v1','k2':'v2','k3':'v3'}
>>> D.update({'k3':'VIII','k4':'v4'})
>>> print(D)
{'k3': 'VIII', 'k2': 'v2', 'k1': 'v1', 'k4': 'v4'}

    fromkeys(*args, **kwargs):生成一个字典,key值为参数1,value为参数2

>>> d = dict.fromkeys(['k1','k2','k3'],[1,])
>>> print(d)
{'k3': [1], 'k2': [1], 'k1': [1]}

      注意:此方法生成的字典,原理是将k1,k2,k3同时指向[1,]的内存地址,故当对[1,]进行更改时,由于k1,k2,k3指向的内存地址不变,则:

>>> d = dict.fromkeys(['k1','k2','k3'],[1,])
>>> print(d)
{'k3': [1], 'k2': [1], 'k1': [1]}
>>> d['k2'].append(2)
>>> print(d)
{'k3': [1, 2], 'k2': [1, 2], 'k1': [1, 2]}

    额外:

      -字典可嵌套

      -字典的key为不可变类型

D_test = {
        'k1':'v1',  #key=str
        1:'v2',    #key=bool
        2:'v3',    #key=int
        (1,2):'v4',  #key=tuple
        False:'v5'  #key=bool
}

print(D_test)

{(1, 2): 'v4', 1: 'v2', 2: 'v3', 'k1': 'v1', False: 'v5'}

    

七、python数据类型set

  -set类方法:

    add(self, *args, **kwargs):

>>> s1 = {1,2,3,4,5}
>>> s1.add(5)
>>> print(s1)
{1, 2, 3, 4, 5}
>>> s1.add(6)
>>> print(s1)
{1, 2, 3, 4, 5, 6}

    difference(self, *args, **kwargs):

>>> s1 = {1,2,3,4,5}
>>> s2 = {3,4,5,6,7}
>>> s1.difference(s2)    #s1中存在,s2中不存在的值
{1, 2}
>>> s2.difference(s1)    #s2中存在,s1中不存在的值
{6, 7}
>>> s1.difference_update(s2)    #s1中存在,s2中不存在的值,清空s1并重新赋值给s1
>>> s1
{1, 2}

    symmetric_difference(self, *args, **kwargs): 

>>> s1 = {1,2,3,4,5}
>>> s2 = {3,4,5,6,7}
>>> s1.symmetric_difference(s2)    #s1,s2中互不存在的值
{1, 2, 6, 7}
>>> s2.symmetric_difference(s1)
{1, 2, 6, 7}

    intersection(self, *args, **kwargs):

    union(self, *args, **kwargs):

>>> s1 = {1,2,3,4,5}
>>> s2 = {3,4,5,6,7}
>>> s1.intersection(s2)    #s1,s2交集
{3, 4, 5}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7}    #s1,s2并集

    discard(self, *args, **kwargs):

>>> s1 = {1,2,3,4,5}
>>> s1.discard(4)
>>> s1
{1, 2, 3, 5}

    update(self, *args, **kwargs):

>>> s1 = {1,2,3,4,5}
>>> s1.update({1,2,6,7})
>>> s1
{1, 2, 3, 4, 5, 6, 7}

     额外:

>>> s1 = {1,2,3,4,5,[1,2]}
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> s1 = {1,2,3,4,5,(1,2)}
>>> t1 = (1,2,3,4,5,[1,2])

      set不支持索引,切片

 

 

八、python数据类型互相转换

str转换list:

>>> s = 'elaine'
>>> list(s)
['e', 'l', 'a', 'i', 'n', 'e']

str转换tuple:

>>> s = 'elaine'
>>> tuple(s)
('e', 'l', 'a', 'i', 'n', 'e')

list转换str:

>>> li = ['e', 'l', 'a', 'i', 'n', 'e']
>>> ''.join(li)
'elaine'

list转换tuple:

>>> li = ['e', 'l', 'a', 'i', 'n', 'e']
>>> tuple(li)
('e', 'l', 'a', 'i', 'n', 'e')

list转换dict:

1、现在有两个列表,list1 = ['key1','key2','key3']和list2 = ['1','2','3'],把他们转为这样的字典:{'key1':'1','key2':'2','key3':'3'}

>>>list1 = ['key1','key2','key3']
>>>list2 = ['1','2','3']
>>>dict(zip(list1,list2))
{'key1':'1','key2':'2','key3':'3'}

2、将嵌套列表转为字典,有两种方法,

>>>new_list= [['key1','value1'],['key2','value2'],['key3','value3']]

>>>dict(list)

{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}

或者这样:

>>>new_list= [['key1','value1'],['key2','value2'],['key3','value3']]

>>>new_dict = {}

>>> for i in new_list:

...   new_dict[i[0]] = i[1]                #字典赋值,左边为key,右边为value

...

>>> new_dict

{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}

tuple转换str:

>>> tu = ('e', 'l', 'a', 'i', 'n', 'e')
>>> ''.join(tu)
'elaine'

tuple转换list:

>>> tu = ('e', 'l', 'a', 'i', 'n', 'e')
>>> list(tu)
['e', 'l', 'a', 'i', 'n', 'e']

 

    

    

 

posted @ 2017-05-07 09:31  Dylan_Wu  阅读(135)  评论(0)    收藏  举报