2.python基础深入(元组、字符串、列表、字典)

一,对象与类
对象:
python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,玩的手机就是对象。
我们通过描述属性(特征)和行为来描述一个对象的。

在python中,一个对象的特征也称为属性(attribute)。它所具有的行为也称为方法(method)

结论:对象=属性+方法

在python中,把具有相同属性和方法的对象归为一个类(class)

比如人类,动物,植物等等,这些都是类的概念。

类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化。类不代表具体的事物,而对象表示具体的事物。

 
例如:”liuyao“ “yaoyao” “shabi” 都是根据不同的类进行创建的对象
 


一,整数
1.int型

具有的功能:

 

1
class int ( object ):

(1).返回表示该数字的时占用的最少位数

1
2
3
4
def bit_length( self ):
例:
>>> bin ( 10 )
'0b1010' #0b是二进制,1010是所占位数

(2).返回绝对值

 

1
2
3
4
5
6
7
def __abs__( self ):
例:
>>> absolute = - 10
>>> absolute.__abs__()
10
>>> abs ( - 10 )
10

(3).相除,得到商和余数组成的元组

 

1
2
3
4
5
6
def __divmod__( self )
例:
>>> age = 21
>>> sb = age.__divmod__( 6 )
>>> print (sb)
( 3 , 3 )

(4).int转换为浮点类型

(5).__cmp__(self, y)比较两个数大小   注:在3.x版本被

(6).__coerce__(self, y)强制生成一个元组   注:在3.x版本被取消

(7).数值相加

1
2
3
4
5
6
7
8
def __add__( self ,other)
例:
>>> num1 = 15
>>> num2 = 20
>>> print (num1 + num2)
35
>>> print (num1.__add__(num2))
35

(8).布尔值

 

1
2
3
4
5
6
>>> bool = 0
>>> print ( bool .__bool__())
False
>>> bool = 1
>>> print ( bool .__bool__())
True

9. 判断是是否相等

1
2
3
4
>>> zhi1 = 10
>>> zhi2 = 11
>>> print (zhi1.__eq__(zhi2))
False

10. 返回浮点

1
2
3
>>> zhi = 10
>>> print (zhi.__float__())
10.0

11. 地板除

1
2
3
4
>>> a= 10
>>> b= 3
>>> print(a.__floordiv__(b))
3

12. 大于等于

1
2
3
4
>>> a = 20
>>> b = 12
>>> print (a.__ge__(b))
True

13. 大于

1
2
>>> print (a.__gt__(b))
True

14.哈希

1
print (num.__hash__())

15.__invert__ :取反

1
2
3
>>> a = 45
>>> print (a.__invert__())
- 46

16.小于等于

1
2
3
4
>>> a = 10
>>> b = 20
>>> print (a.__lt__(b))
True

17. __lshift__ :左移位

1
2
3
4
>>> num1 = 10
>>> num2 = 10
>>> print (num1.__lshift__(num2))
10240

18.求模

1
2
3
4
>>> a = 20
>>> b = 11
>>> print (a.__mod__(b))
9

19.相乘

1
2
3
4
>>> a = 10
>>> b = 2
>>> print (a.__mul__(b))
20

20.取反

1
2
3
>>> a = 21
>>> print (a.__neg__())
- 21

21.不等于

1
2
3
4
>>> a = 20
>>> b = 10
>>> print (a.__ne__(b))
True

22.取正数

1
2
3
4
5
6
>>> a = - 10
>>> print (a.__pos__())
- 10
>>> a = 10
>>> print (a.__pos__())
10

23 乘方

 

1
2
3
>>> a = 10
>>> print (a.__pow__( 10 ))
10000000000

24.右加(以下前缀为r的都是右;前缀为l的都是左)

1
print (a.__radd__(b))

25.右或

1
print (a.__repr__())

26.右除以左,返回商和余数

1
print (a.__repr__())

27.转换为解释器可读取的形式

1
print (a.__repr__())

28.转换为字符串

1
2
3
>>> a = 10
>>> print (a.__pow__( 10 ))
10000000000

29.求差 

1
2
3
>>>num= 10
>>>num2= 20
print(num.__sub__(num2))

2、long型

 

具有的功能:

1
class long ( object ):

同int型

3.float型

 

1.返回分子分母数构成的元祖
1
as_integer_ratio()

2.将十六进制数转换为浮点数

1
print ( float .fromhex( '0x1.ffffp10' ))

3.将浮点数转换为十六进制数

1
print ( 2047.984375 . hex ())

4.判断浮点数是不是整数

1
2
3
f1 = 10.2
f2 = 10.0
print (f1.is_integer()) 31print (f2.is_integer())

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


二.字符串

具有的功能:

1
class str ( basestring ):

1.首字母变大写

1
2
3
4
5
def capitalize( self ):
例:
>>> name = 'yaoyao'
>>> print (name.capitalize())
Yaoyao

2.内容居中

1
2
3
4
5
6
def center( self , width, fillchar = None ): 
""" 内容居中,width:总长度;fillchar:空白处填充内容,默认无 """
例:
>>> name = 'liuyao'
>>> print (name.center( 20 , '*' ))
* * * * * * * liuyao * * * * * * *

3.查询个数

1
2
3
4
5
6
7
count( self , sub, start = None , end = None )子序列个数 sub:要查询的子序列 start:开始位置 end:结束位置
例:
>>> cou = 'asdfghjasdfgjqweryuzxcvbnm'
>>> print (cou.count( 'as' ))
2
>>> print (cou.count( 'as' , 1 , 25 ))
1

4.编码修改

1
2
3
4
5
6
encode( self , encoding = None , errors = None )编码,针对 unicode  encoding = '解码的格式'
例:
>>> name = '刘耀'
>>> print (name.encode( 'gbk' ))
b '\xc1\xf5\xd2\xab'
>>>

5.endswith

1
2
3
4
5
6
7
endswith( self , suffix, start = None , end = None )是否以xxx结尾 suffix:填入结尾的字符串  start = 在第几个字符开始  end = 在第几个字符结束
endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回 True ,否则返回 False 。可选参数 "start" "end" 为检索字符串的开始与结束位置。
例:
>>> name = 'asdfghjklo'
>>> print (name.endswith( 'lo' , 0 , 6 ))
False
>>>

6.expandtabs()

1
2
3
4
5
expandtabs() 方法把字符串中的 tab 符号( '\t' )转为空格,默认的空格数 tabsize 是 8
例:
>>> extab = 'one\ttwo'
>>> print (extab.expandtabs())
one     two

7.find

1
2
3
4
5
6
7
find( self , sub, start = None , end = None )寻找子序列位置,如果没找到,返回 - 1
例:
>>> name = 'yaotwosiji'
>>> print (name.find( 'two' , 1 , 8 ))
3
>>> print (name.find( 'two' , 1 , 3 ))
- 1

8.casefold

 

1
2
casefold( self )大写转小写 注: 3.x 新增方法, 2.x 没有
例:

9.format格式化

1
2
3
4
5
6
format ( * args, * * kwargs)字符串格式化
例:
>>> name = 'liuyao'
>>> age = '21'
>>> print ( '姓名{0},年龄{1}' . format (name,age))
姓名liuyao,年龄 21

10.index

1
2
3
4
5
6
7
8
9
index( self , sub, start = None , end = None )子序列位置,如果没找到,报错
例:
>>> name = 'asdfghjklqwertyui'
>>> print (name.index( 'fg' ))
3
>>> print (name.index( 'fg' , 1 , 3 ))
Traceback (most recent call last):
   File "<stdin>" , line 1 , in <module>
ValueError: substring not found

11.isalnum

1
2
3
4
5
6
7
8
isalnum( self )如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True ,否则返回 False
例:
>>> zifu = 'yao1995'
>>> print (zifu.isalnum())
True
>>> zifutab = 'yao 1995'
>>> print (zifutab.isalnum())
False

12.isalpha

1
2
3
4
5
isalpha( self )如果字符串至少有一个字符并且所有字符都是字母则返回 True ,否则返回 False
例:
>>> zifutab = 'yao'
>>> print (zifutab.isalpha())
True

13.isdigit

1
2
3
4
5
isdigit( self )如果字符串只包含数字则返回 True 否则返回 False
例:
>>> shuzi = '1995'
>>> print (shuzi.isdigit())
True

14.islower

1
2
3
4
5
islower( self )如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True ,否则返回 False
例:
>>> zifu = 'Liuyao'
>>> print (zifu.islower())
False

15.isspace

1
2
3
4
5
isspace( self )如果字符串中只包含空格,则返回 True ,否则返回 False
例:
>>> kongge = '    '
>>> print (kongge.isspace())
True

16.istitle

1
2
3
4
5
istitle( self )如果字符串中所有的单词拼写首字母是否为大写,且其他字母为小写则返回 True ,否则返回 False
例:
>>> zifu = 'Liu Yao'
>>> print (zifu.istitle())
True

17.isupper

1
2
3
4
5
isupper( self )如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True ,否则返回 False
例:
>>> zifu = 'LIU YAO'
>>> print (zifu.isupper())
True

18.join

1
2
3
4
5
6
join( self , iterable)返回通过指定字符连接序列中元素后生成的新字符串
例:
>>> lj = '^'
>>> name = ( 'y' , 'a' , 'o' )
>>> print (lj.join(name))
y^a^o

19.ljust

1
2
ljust( self , width, fillchar = None )返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串
例:

20.lower

 

1
2
3
4
lower( self )返回将字符串中所有大写字符转换为小写后生成的字符串
>>> name = 'LIUYAO'
>>> print (name.lower())
liuyao

21.lstrip

 

1
2
3
4
lstrip( self , chars = None )返回截掉字符串左边的空格或指定字符后生成的新字符串
>>> name = 'liuyaoliuyaoliuyao'
>>> print (name.lstrip( 'liu' ))
yaoliuyaoliuyao

22.partition

 

1
2
3
4
partition( self , sep)返回一个 3 元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串
>>> who = 'wo shi liuyao'
>>> print (who.partition( 'shi' ))
( 'wo ' , 'shi' , ' liuyao' )

23.replace

 

1
2
3
4
5
6
replace( self , old, new, count = None )返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数 max ,则替换不超过 max
>>> str1 = 'ni shi wo shi shei shi'
>>> print (str1.replace( 'shi' , 'ta' ))
ni ta wo ta shei ta
>>> print (str1.replace( 'shi' , 'ta' , 1 ))
ni ta wo shi shei shi

24.split

 

1
2
3
4
5
6
split( self , sep = None , maxsplit = None )通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串
>>> str1 = 'a1 b2 c3 d4'
>>> print (str1.split())
[ 'a1' , 'b2' , 'c3' , 'd4' ]
>>> print (str1.split( ' ' , 2 ))
[ 'a1' , 'b2' , 'c3 d4' ]

25.splitlines

 

1
2
3
4
5
6
7
8
9
10
11
12
13
splitlines( self , keepends = False )按照行分隔,返回一个包含各行作为元素的列表,如果 num 指定则仅切片 num 个行
>>> str1 = '\na1b2 c3 d4'
>>> str1 = '\na1b2\nc3\nd4\n'
>>> print (str1)
    
a1b2
c3
d4
    
>>> print (str1.splitlines())
[' ', ' a1b2 ', ' c3 ', ' d4']
>>> print (str1.splitlines( 2 ))
[ '\n' , 'a1b2\n' , 'c3\n' , 'd4\n' ]

26.startswith

 

1
2
3
4
5
6
startswith( self , prefix, start = None , end = None )用于检查字符串是否是以指定子字符串开头,如果是则返回 True ,否则返回 False 。如果参数 beg 和 end 指定值,则在指定范围内检查
>>> name = 'LIUyao'
>>> print (name.startswith( 'LI' ))
True
>>> print (name.startswith( 'ya' ))
False

27.swapcase

 

1
2
3
4
swapcase( self )用于对字符串的大小写字母进行转换
>>> name = 'LIUyao'
>>> print (name.swapcase())
liuYAO

28.translate

 

1
translate( self , table, deletechars = None )根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中,table - - 翻译表,翻译表是通过maketrans方法转换而来,deletechars - - 字符串中要过滤的字符列表。

29.upper

 

1
2
3
4
upper( self )将字符串中的小写字母转为大写字母
>>> name = 'yaoyao'
>>> print (name.upper())
YAOYAO

30.zfill

 

1
2
3
4
5
6
zfill( self , width)返回指定长度的字符串,width - - 指定字符串的长度。原字符串右对齐,前面填充 0
>>> str1 = 'a1 b2 c3 d4'
>>> print (str1.zfill( 10 ))
a1 b2 c3 d4
>>> print (str1.zfill( 15 ))
0000a1 b2 c3 d4

 

 


三.列表

具有以下方法:

1、追加

 

1
2
3
4
5
append( self , p_object)用于在列表末尾添加新的对象,obj - - 添加到列表末尾的对象,该方法无返回值,但是会修改原来的列表。
>>> lie = [ 1 , 2 , 3 , 4 , 5 ]
>>> lie.append( 6 )
>>> print (lie)
[ 1 , 2 , 3 , 4 , 5 , 6 ]

2、统计

1
2
3
4
count( self , value)用于统计某个元素在列表中出现的次数,value - - 列表中统计的对象,返回元素在列表中出现的次数。
>>> lie = [ 1 , 2 , 3 , 4 , 5 , 1 , 2 , 3 ]
>>> print (lie.count( 2 ))
2

3、合并

1
2
3
4
5
6
7
8
extend( self , iterable)用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表),seq - - 元素列表,该方法没有返回值,但会在已存在的列表中添加新的列表内容
>>> list1
[ 1 , 2 , 3 , 4 , 5 ]
>>> list2
[ 'a' , 'b' , 'c' , 'd' , 'f' ]
>>> list1.extend(list2)
>>> list1
[ 1 , 2 , 3 , 4 , 5 , 'a' , 'b' , 'c' , 'd' , 'f' ]

4、索引

1
2
3
4
5
index( self , value, start = None , stop = None )用于从列表中找出某个值第一个匹配项的索引位置,value - - 查找的对象,该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。
>>> list1
[ 1 , 2 , 3 , 4 , 5 , 'a' , 'b' , 'c' , 'd' , 'f' ]
>>> print (list1.index( 'a' ))
5

5、指定插入

1
2
3
4
5
6
insert( self , index, p_object)用于将指定对象插入列表,index - - 对象obj需要插入的索引位置,obj - - 要插入列表中的对象,该方法没有返回值,但会在列表指定位置插
>>> list1
[ 1 , 2 , 3 , 4 , 5 , 'a' , 'b' , 'c' , 'd' ]
>>> list1.insert( 2 , '6' )
>>> list1
[ 1 , 2 , '6' , 3 , 4 , 5 , 'a' , 'b' , 'c' , 'd' ]

6、删除最后一个元素

1
2
3
4
5
pop( self , index = None )用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值,index - - 可选参数,要移除列表元素的对象,该方法返回从列表中移除的元素对象。
>>> list1.pop()
'f'
>>> list1
[ 1 , 2 , 3 , 4 , 5 , 'a' , 'b' , 'c' , 'd' ]

7、指定删除

1
2
3
4
5
6
remove( self , value)用于移除列表中某个值的第一个匹配项,value - - 列表中要移除的对象,该方法没有返回值但是会移除两种中的某个值的第一个匹配项。
>>> list1
[ 1 , 2 , '6' , 3 , 4 , 5 , 'a' , 'b' , 'c' , 'd' ]
>>> list1.remove( 5 )
>>> list1
[ 1 , 2 , '6' , 3 , 4 , 'a' , 'b' , 'c' , 'd' ]

8、反向存放

1
2
3
4
5
6
reverse( self )用于反向列表中元素,该方法没有返回值,但是会对列表的元素进行反向排序。
>>> list1
[ 1 , 2 , '6' , 3 , 4 , 'a' , 'b' , 'c' , 'd' ]
>>> list1.reverse()
>>> list1
[ 'd' , 'c' , 'b' , 'a' , 4 , 3 , '6' , 2 , 1 ]

9、排序

1
2
3
4
5
sort( self , cmp = None , key = None , reverse = False )用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数,该方法没有返回值,但是会对列表的对象进行排序。
>>> list1 = [ 1 , 2 , 3 , 4 , 5 , 7 , 8 , 6 , 5 ]
>>> list1.sort()
>>> list1
[ 1 , 2 , 3 , 4 , 5 , 5 , 6 , 7 , 8 ]

10、反序

1
sorted 内建函数:对序列进行反序,并返回一个列表

四.元祖

 

元组的意义:

元组可以在映射中当作键使用;

元组作为很多内建函数和方法的返回值存在。

元组的元素是不能被修改,但元素的元素能可以被被修改的

具有以下方法:

1.统计

1
2
3
4
5
>>> boy = ( 'kelin' , 'yaoyao' , 'liuyao' , 'shabi' )
>>> type (boy)
< class 'tuple' >
>>> boy.count( 'yaoyao' )
1

2.索引

1
2
>>> boy.index( 'liuyao' )
2

 

五.字典

当数据量达到上百万时,循环字典就不适合用dict.items(),因为首先会把一对对key和value转化为列表,然后在循环遍历输出,会增加内存使用。建议使用如下:

1
2
3
4
5
6
7
>>> a = { 1 : 'a' , 2 : 'b' }
>>> for k in aa: print (k,aa[k])
( 1 , 'a' )
( 2 , 'b' )
>>> for k in aa.keys(): print (k,aa[k])
( 1 , 'a' )
( 2 , 'b' )

具有以下方法:

1、删除字典内所有元素

1
2
3
4
5
6
7
clear( self )用于删除字典内所有元素,该函数没有任何返回值。
>>> dic = { 'k1' : 'v1' , 'k2' : 'v2' }
>>> dic
{ 'k2' : 'v2' , 'k1' : 'v1' }
>>> dic.clear()
>>> dic
{}

2、浅复制

1
2
3
4
5
copy( self )返回一个字典的浅复制。
>>> dic = { 'k1' : 'v1' , 'k1' : 'v2' }
>>> dic.copy()
{ 'k1' : 'v2' }
>>>

3、get

1
2
3
4
5
get (self, k, d=None)返回指定键的值,如果值不在字典中返回默认值,key -- 字典中要查找的键, default -- 如果指定键的值不存在时,返回该默认值值。
>>> dic = { 'k1' : 'v1' , 'k2' : 'v2' }
>>> dic. get ( 'k1' )
'v1'
>>>

4、has_key

1
has_key( self , k)用于判断键是否存在于字典中,如果键在字典 dict 里返回true,否则返回false,k - - 要在字典中查找的键。注: 3.x 已删除该函数

5、items

1
2
3
4
items( self )以列表返回可遍历的(键, 值) 元组数组。
>>> dic = { 'name' : 'yaoyao' , 'age' : '21' , 'job' : 'IT' }
>>> dic.items()
dict_items([( 'age' , '21' ), ( 'name' , 'yaoyao' ), ( 'job' , 'IT' )])

6、iteritems

1
iteritems( self )项可迭代。注: 3.x 已删除该函数

7、iterkeys

1
iterkeys( self )key可迭代。注: 3.x 已删除该函数

8、itervalues

1
itervalues( self )value可迭代。注: 3.x 已删除该函数

9、keys

1
2
3
4
keys( self )以列表返回一个字典所有的键。
>>> dic = { 'name' : 'yaoyao' , 'age' : '21' , 'job' : 'IT' }
>>> dic.keys()
dict_keys([ 'age' , 'name' , 'job' ])

10、删除键

1
2
3
4
5
6
pop(self, k, d=None)获取并在字典中移除,k -- 要在字典中查找的键。
>>> dic={ 'name' : 'yaoyao' , 'age' : '21' , 'job' : 'IT' }
>>> dic.pop( 'job' )
'IT'
>>> dic
{ 'age' : '21' , 'name' : 'yaoyao' }

11、popitem

1
2
3
4
5
6
popitem( self )获取并在字典中移除
>>> dic = { 'name' : 'yaoyao' , 'age' : '21' , 'job' : 'IT' }
>>> dic.popitem()
( 'age' , '21' )
>>> dic
{ 'name' : 'yaoyao' , 'job' : 'IT' }

12、setdefault

1
2
3
4
5
setdefault( self , k, d = None )如果key不存在,则创建,如果存在,则返回已存在的值且不修改
>>> dic = { 'name' : 'yaoyao' , 'age' : '21' , 'job' : 'IT' }
>>> dic.setdefault( 'sex' )
>>> dic
{ 'sex' : None , 'age' : '21' , 'name' : 'yaoyao' , 'job' : 'IT' }

13、更新

1
2
3
4
5
6
update( self , E = None , * * F)更新
>>> dic = { 'name' : 'yaoyao' , 'age' : '21' , 'job' : 'IT' }
>>> dic_1 = { 'sex' : 'man' }
>>> dic.update(dic_1)
>>> dic
{ 'sex' : 'man' , 'age' : '21' , 'name' : 'yaoyao' , 'job' : 'IT' }

14、values

1
2
3
4
values( self )以列表返回字典中的所有值。
>>> dic = { 'name' : 'yaoyao' , 'age' : '21' , 'job' : 'IT' }
>>> dic.values()
dict_values([ '21' , 'yaoyao' , 'IT' ])

15、viewitems

1
viewitems( self )所有项,只是将内容保存至view对象中。注: 3.x 已删除该函数

 

 

 

 





转载于:https://www.cnblogs.com/liu-yao/p/5145876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值