记录一些Python知识点
1.Python连续赋值
两个方法:
1)a = b = c = 1
2)a, b, c = 1, 2, 3
易错用法:
a, b, c = 1
2.字符串与列表相互转换
字符串转列表:
方法1-split()
>>> s = 'a b c d'
>>> s.split(' ')
['a', 'b', 'c', 'd']
方法2-list()
>>> s = 'abcd'
>>> list(s)
['a', 'b', 'c', 'd']
方法3-eval()函数(该方法也可用于转换dict、tuple等)
>>> s
'[1,2,3]'
>>> eval(s)
[1, 2, 3]
>>> type(eval(s))
<class 'list'>
列表转字符串:
string = ”.join(l) 前提是list的每个元素都为字符
3.enumerate()用法
enumerate()枚举是Python的内置函数,返回枚举对象用来将一个可遍历的数据对象(如列表、字符串、字典或元组)组合为一个索引序列,生成数据下标和数据的元组,一般用在for循环中。
>>> l
[1, 2, 3]
>>> s
'a b c d'
>>> list(enumerate(s))
[(0, 'a'), (1, ' '), (2, 'b'), (3, ' '), (4, 'c'), (5, ' '), (6, 'd')]
>>> list(enumerate(l))
[(0, 1), (1, 2), (2, 3)]
>>> a = list(enumerate(l))[0]
>>> type(a)
<class 'tuple'>
4.迭代器深入理解
5.Python any()和all()用法
any(iterable) -> bool
- any(x)判断x对象是否为空对象,如果都为空、0、false,则返回false,如果不都为空、0、false,则返回true
all(iterable) -> bool
- all(x)如果all(x)参数x对象的所有元素不为0、”、False或者x为空对象,则返回True,否则返回False
注意:空元组、空列表返回值为True,这里要特别注意。
def all(iterable):
for element in iterable:
if not element:
return False
return True
例子
>>> any([0,0])
False
>>> any('0')
True
>>> any('')
False
>>> all('0')
True
>>> all('')
True
>>> all([])
True
>>> any(['a', 'b', 'c', 'd']) #列表list,元素都不为空或0
True
>>> any(['a', 'b', '', 'd']) #列表list,存在一个为空的元素
True
>>> any([0, '', False]) #列表list,元素全为0,'',false
False
>>> any(('a', 'b', 'c', 'd')) #元组tuple,元素都不为空或0
True
>>> any(('a', 'b', '', 'd')) #元组tuple,存在一个为空的元素
True
>>> any((0, '', False)) #元组tuple,元素全为0,'',false
False
>>> any([]) # 空列表
False
>>> any(()) # 空元组
False
>>> all(['a', 'b', 'c', 'd']) #列表list,元素都不为空或0
True
>>> all(['a', 'b', '', 'd']) #列表list,存在一个为空的元素
False
>>> all([0, 1,2, 3]) #列表list,存在一个为0的元素
False
>>> all(('a', 'b', 'c', 'd')) #元组tuple,元素都不为空或0
True
>>> all(('a', 'b', '', 'd')) #元组tuple,存在一个为空的元素
False
>>> all((0, 1,2, 3)) #元组tuple,存在一个为0的元素
False
>>> all([]) # 空列表
True
>>> all(()) # 空元组
True
6.and、or短路运算符
短路,在很多语言中都有的特性,在且的情况下,全部为真才为真,因为第一个c是真,所以它无法判断整个表达式是否为真或为假(前后都为真才是真,其中一个为假就是假了),他就会接着进行后面的,所以就是选择了后面的,如果这个条件表达式是或,前面的已经是真了,不需要管后面的是真是假都能证明整个表达式为真,就不会进行后面的,自然会选择前面的,这个东西在很多语言中都有,大致理解就是&&(and)的情况下前面为真进行后面,前面为假不进行后面,||(or)的情况下,前面为真不进行后面,前面为假进行后面。
1.) 表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。
2.) 表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。
3.)若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。
7. 类私有变量
_var ;变量名前一个下划线来定义,此变量为保护成员protected,只有类及其子类可以访问。此变量不能通过from XXX import xxx 导入
__var;变量名前两个下划线来定义,此变量为私有private,只允许类本身访问,连子类都不可以访问。
8. 集合set的相关方法
集合的定义:s = set() 或者 s = {1,2,3}
set.add():新增元素
set1.intersection(set2):求set1与set2的交集
set1.difference(set2):求set1与set2的差集,set1-set2
set1.union(set2):求并集
set.discard(x):如果x在set中,则移除x。
例子
>>> set.intersection(s,d)#获取s,d的交集
{1}
>>> s = {1,2,3,4,5}
>>> d = {2,3,4,5,6}
>>> s.intersection(d)
{2, 3, 4, 5}
>>> s.union(d)#并集
{1, 2, 3, 4, 5, 6}
>>> s.difference(d)#获取差集s-d
{1}
>>> d.difference(s)#获取差集d-s
{6}
>>> s
{1, 2, 3, 4, 5}
>>> s.discard(3)
>>> s
{1, 2, 4, 5}
>>> s.discard(6)
>>> s
{1, 2, 4, 5}
9.Python表示正负无穷
float(“inf”)#正无穷
float(“-inf”)#负无穷