【Python】读书笔记,基础函数


====================================================

Python中的基本运算

Python除法中若出现浮点数,值则也为浮点数

1.0 / 2 = 1 /2.0 =0.5

使用 // 会执行整除

4 // 3 = 1

使用 % 取余(模)

8 % 3 = 2

幂运算符

2 ** 3 = 8

3 ** 3 = 27

幂运算符优先级高于一元运算符

-3 ** 2 = -9

(-3) ** 2 = 9

=====================================================

字符串拼接

一般情况下使用加好进行字符串拼接

两个相连的字符串会自动进行拼接

>>> "zheng""lu"

'zhenglu'

input 和 raw_input 的区别

#使用input输入字符串时若不加引号会报错,将input改为raw_input输如什么就会输出什么

name = input("What is your name?")

print "Hello " + name + "!"

Python中的长字符串

>>> print '''This is

... next line

... next next line'''

This is

next line

next next line

>>> print 3 + \

... + 3\

... +3

9

原始字符串

在Python中 \ 可以用于转义,在实际使用中可能出现如下问题

print 'C:\not null' 输出 \n 会自动当作换行,这种情况下就要使用 \\ 来进行转义,但是可读性差,处女座绝对接受不了

这种情况下可使用以下语句(r和输出语句间没有空格)

print r'C:\not null'

列表和元组

列表和元组都是序列,区别在于列表可以修改,元组不能修改

索引

相当于PHP的索引数组

language = ['C', 'Java', 'Python']

print language[1]

Java

~~~~~~~~~~~

name = "zhenglu"

print name[2]

e


切片

切片相当于 start <= content < end

print language[1:2]

Java

~~~~~~~~~~~~~~

print name[2:4]

en


到末尾的索引

num = [1,2,3,4,5,6,7,8]

num[-3:][6,7,8]

num[:3]

[1,2,3]


步长

步长是指两个元素之间的间隔,为切片的第三个值,正数表示正序,负数为逆序

>>> num = [1, 2, 3, 4, 5, 6, 7, 8]

>>> num[1:6:2]

[2, 4, 6]

>>> num[1::3]

[2, 5, 8]

>>> num[::3]

[1, 4, 7]

>>> num[::-2]

[8, 6, 4, 2]


序列的相加

>>> ["zheng"]+["lu"]

['zheng', 'lu']


乘法

>>> "zhenglu" * 5

'zhengluzhengluzhengluzhengluzhenglu'

>>> ['lu'] * 5

['lu', 'lu', 'lu', 'lu', 'lu']


查看元素是否在序列当中

使用 in 进行操作 返回boolean值,该操作区分大小写

language = ['C', 'Java', 'Python']

>>> 'C' in language

True

>>> 'C++' in language

False


Python中的 长度 最大值 最小值

>>> len(name)

7

>>> len(language)

3

>>> max(name)

'z'

>>> max(language)

'Python'

>>> min(name)

'e'

>>> min(language)

'C'


更改元素的值

>>> language[0] = "C++"

>>> language

['C++', 'Java', 'Python']


删除元素

删除之后序列的索引会改变

>>> del language[0]

>>> language

['Java', 'Python']

>>> language[0]

'Java'


>>> num

[0, 1, 2, 3, 4, 5, 6, 7, 8]

>>> del num[4:7]

>>> num

[0, 1, 2, 3, 7, 8]


切片赋值

>>> name = list('canglaoshi')

>>> name[4:]

['l', 'a', 'o', 's', 'h', 'i']


>>> name[4:] = list('jingkong')

>>> name

['c', 'a', 'n', 'g', 'j', 'i', 'n', 'g', 'k', 'o', 'n', 'g']


切片替换

>>> num = [0,1,2,3,4,5,6,7,8]

>>> num[3:5] = ['Hello','World']

>>> num

[0, 1, 2, 'Hello', 'World', 5, 6, 7, 8]


利用切片进行删除操作

>>> num[3:5] = []

>>> num

[0, 1, 2, 5, 6, 7, 8]


append在末尾追加元素

>>> language = ['Java', 'Python']

>>> language.append('JS')

>>> language

['Java', 'Python', 'JS']


count统计指定元素出现次数

>>> av = ['苍井空','泷泽萝拉','小泽玛利亚','苍井空']

>>> av.count('苍井空')

2

>>> av.count('老毕')

0


extend扩展列表

extend和加号的区别在于使用extend是将y列表加入到x中,返回的是x,

加号则是将两个列表相加返回一个新的列表

>>> x = [2,3,4,5]

>>> y = [6,7,8,9]

>>> x.extend(y)

>>> x

[2, 3, 4, 5, 6, 7, 8, 9]

>>> y

[6, 7, 8, 9]


>>> x = [2,3,4,5]

>>> y = [6,7,8,9]

>>> x + y

[2, 3, 4, 5, 6, 7, 8, 9]

>>> x

[2, 3, 4, 5]

>>> y

[6, 7, 8, 9]


index查看元素第一次出现的索引

>>> av = ['苍井空','泷泽萝拉','小泽玛利亚','苍井空']

>>> av.index('苍井空')

0

>>> av.index('小泽玛利亚')

2


insert实现数据的插入

>>> language = ['Java', 'Python', 'JS']

>>> language.insert(1, 'PHP')

>>> language

['Java', 'PHP', 'Python', 'JS']


pop删除最后一个元素并返回值

>>> subject = language.pop()

>>> subject

'JS'

>>> language

['Java', 'PHP', 'Python']


remove删除列表中第一个匹配的项

>>> language = ['Java', 'PHP', 'Python', 'PHP']

>>> language.remove('PHP')

>>> language

['Java', 'Python', 'PHP']


reverse反转列表

>>> language.reverse()

>>> language

['PHP', 'Python', 'Java']


sort对列表进行排序

>>> language.sort()

>>> language

['Java', 'PHP', 'Python']


关于赋值后排序,直接赋值并排序是赋的一个引用,应使用以下方法进行操作

>>> x = [4,3,6,0,5,1]

>>> y = x[:]

>>> y.sort()

>>> x

[4, 3, 6, 0, 5, 1]

>>> y

[0, 1, 3, 4, 5, 6]


>>> x = [4,3,6,0,5,1]

>>> y = x

>>> y.sort()

>>> x

[0, 1, 3, 4, 5, 6]

>>> y

[0, 1, 3, 4, 5, 6]


元组

元组和列表一样,是一种序列,但元组不能进行增删改操作

元组的声明,各元素之间使用逗号进行分隔

>>> phone = 'iphone','nokia','moto'

>>> phone

('iphone', 'nokia', 'moto')


>>> phone = ('iphone','nokia','moto')

>>> phone

('iphone', 'nokia', 'moto')


空元组

>>> test = ()

>>> test

()


只有一个元素的元组

>>> only = 'love',

>>> only

('love',)


>>> only = ('love',)

>>> only

('love',)


#错误写法

>>> only = ('love')

>>> only

'love'


元组相关的操作

>>> 5 * 'gay'

'gaygaygaygaygay'

>>> 5 * 'gay',

('gaygaygaygaygay',)

>>> 5 * ('gay')

'gaygaygaygaygay'

>>> 5 * ('gay',)

('gay', 'gay', 'gay', 'gay', 'gay')


tuple函数,将输入转为元组

#字符串转为元组

>>> tuple('love')

('l', 'o', 'v', 'e')


#列表转为元组

>>> database = ['mysql','mssql','orical','mongo']

>>> tuple(database)

('mysql', 'mssql', 'orical', 'mongo')


===============================


字符串

>>> str = 'Pi is %f'

>>> pi = 3.14

>>> str % pi

'Pi is 3.140000'


>>> str = 'Pi is %.2f' # %.2f表示替换浮点数后保留两位小数

>>> pi = 3.14

>>> str % pi

'Pi is 3.14'


Template模板字符串

#替换单词

>>> from string import Template

>>> myTemplate = Template('${who} love ${name}')

>>> myTemplate.substitute(who='i',name='you')

'i love you'


#替换部分字符串

>>> myTemplate = Template('He is very ${x}B!')

>>> myTemplate.substitute(x='N')

'He is very NB!'


#使用字典来替换

>>> s = Template('i love ${who}')

>>> d = {}

>>> d['who'] = 'canglaoshi'

>>> s.substitute(d)

'i love canglaoshi'


find查找子字符串

>>> say = 'Do you love me anymore'

>>> say.find('love')

7

>>> say.find('mlgb')

-1


#find参数2可指定搜索起始位置(含)

>>> str = 'So more and more people go abroad'

>>> str.find('more')

3

>>> str.find('more', 3)

3

>>> str.find('more', 4)

12


join将序列转为字符串

>>> str = ['what','a','fuck','man']

>>> sep = " " #使用空格作为连接符

>>> sep.join(str)

'what a fuck man'


lower将大写字母转为小写

>>> str = "Life Is Like A Box Of Chocolates"

>>> str.lower()

'life is like a box of chocolates'


replace替换字符串

>>> submit = "This is hexie!"

>>> submit.replace("hexie", "*")

'This is *!'


split分隔字符串

>>> db = 'id,username,password,createtime'

>>> db.split(',')

['id', 'username', 'password', 'createtime']


strip删除字符串左右空格

>>> user = ' zhenglu '

>>> user.strip()

'zhenglu'


translate翻译替换

和replace类似,但效率比前者要高

>>> from string import maketrans

>>> table = maketrans("prefix", "apache") #只能替换长度相同的字符串

>>> str = 'prefix_log'

>>> str.translate(table)

'apache_log'

>>> str.translate(table, '_') #第二个参数用于删除指定的字符串

'apachelog'


=======================================

字典(JSON)

>>> people = {"name":"canglaoshi","qq":"123456"}

>>> people

{'qq': '123456', 'name': 'canglaoshi'}

>>> people['name']

'canglaoshi'


dict将其他序列转为字典

>>> mylist = (('site','www.baidu.com'),('name','baidu'))

>>> d = dict(mylist)

>>> d

{'site': 'www.baidu.com', 'name': 'baidu'}

>>> mylist = [('site','www.baidu.com'),('name','baidu')]

>>> d = dict(mylist)

>>> d

{'site': 'www.baidu.com', 'name': 'baidu'}

>>> mylist = [['site','www.baidu.com'],['name','baidu']]

>>> d = dict(mylist)

>>> d

{'site': 'www.baidu.com', 'name': 'baidu'}


len返回字典元素个数

>>> len(d)

2


clear清空字典

>>> d = {'site': 'www.baidu.com', 'name': 'baidu'}

>>> d.clear()

>>> d


#直接赋值指向一个地址

>>> x = {'site': 'www.baidu.com', 'name': 'baidu'}

>>> y = x

>>> y.clear()

>>> x

{}

>>> y

{}


copy浅拷贝(只拷贝一层维度)

>>> x = {'site': 'www.baidu.com', 'name': ['baidu','google']}

>>> y = x.copy()

>>> y['name'].remove('google')

>>> x

{'site': 'www.baidu.com', 'name': ['baidu']}

>>> y

{'site': 'www.baidu.com', 'name': ['baidu']}


deepcopy深度拷贝

>>> from copy import deepcopy

>>> x = {'site': 'www.baidu.com', 'name': ['baidu','google']}

>>> y = deepcopy(x)

>>> y['name'].remove('google')

>>> x

{'site': 'www.baidu.com', 'name': ['baidu', 'google']}

>>> y

{'site': 'www.baidu.com', 'name': ['baidu']}


formkeys使用指定值作为键名创建一个空字典

>>> dirc = {}.fromkeys(['name','age'])

>>> dirc

{'age': None, 'name': None}


#第二个参数可以指定默认值

>>> dirc = {}.fromkeys(['name','age'], 'Null')

>>> dirc

{'age': 'Null', 'name': 'Null'}


get更宽松的访问字典内容

>>> x = {'site': 'www.baidu.com', 'name': 'baidu'}

>>> print x['av'] #直接访问不存在的键会报错

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

KeyError: 'av'

>>> print x.get('av') #使用get会返回None

None


>>> x = {'site': 'www.baidu.com', 'name': 'baidu', 'av': None}

>>> print x.get('av')

None

>>> print x.get('nba', 'Null') #若值为None,可使用第二个参数指定返回的值

Null


in、has_key查看指定键名是否存在

>>> 'name' in x

True

>>> 'baidu' in x

False


#Python3.0+ 不再支持

>>> x.has_key('name')

True

>>> x.has_key('baidu')

False


items、iteritems将字典转为列表

>>> x.items()

[('av', None), ('site', 'www.baidu.com'), ('name', 'baidu')]

>>> x.iteritems()

<dictionary-itemiterator object at 0xb76c5b44>

>>> obj = x.iteritems()

>>> list(obj)

[('av', None), ('site', 'www.baidu.com'), ('name', 'baidu')]


pop返回指定键的值并删除该键值对

>>> x = {'av': None, 'site': 'www.baidu.com', 'name': 'baidu'}

>>> x.pop('av')

>>> x

{'site': 'www.baidu.com', 'name': 'baidu'}


popitem返回并弹出列表中最后一个元素

>>> x = {'site': 'www.baidu.com', 'name': 'baidu'}

>>> x.popitem()

('site', 'www.baidu.com')

>>> x

{'name': 'baidu'}


update将一个字典更新到另一个字典中

>>> g = {'site': 'www.g.cn', 'name': 'google'}

>>> info = {'site':'www.google.com.hk'}

>>> g.update(info)

>>> g

{'site': 'www.google.com.hk', 'name': 'google'}


values返回所有值

>>> g.values()

['www.google.com.hk', 'google']

>>> g.itervalues()

<dictionary-valueiterator object at 0xb72c01e4>

>>> obj = g.itervalues()

>>> list(obj)

['www.google.com.hk', 'google']


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值