python中的list:
<1>list用[]表示,中文名为列表
<2>list下标为正数时从0开始计数(从左往右)(0到正无穷),下标为为负数时从-1开始(从右往左)(-1到负无穷)。
<3>list的几个方法:
x.append(xxx) 给x这个list末尾增加新元素xxx
x.insert(i, xxx) 给x这个list的第i个位置改成xxx,其余元素后移
x.pop() 删除最后一个元素或者x.pop(2)闪出去最后一个元素
python中的tuple:
<1>tuple用()表示,中文名为元组
<2>tuple一旦创建完毕,就不能改变
python中的dict:
<1>dict建立一组key和value的映射关系,中文名字为字典,key值不能重复,dict为{}。
举个例子:
d = {'liu':100, 'zhou':90}
print(d['liu'])
<2>dict内部是无序的,不能用dict存储有序的集合,不同的机器打印的顺序都可能不同
<3>len()方法:计算dict的大小,len(d)等于2
<4>key可以为list或tuple类型
<4>通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。 如果key不存在,会直接报错:KeyError
<5>要避免 KeyError 发生,有两个办法:
一是先判断一下 key 是否存在,用 in 操作符:
if 'Paul' in d:
print d['liu']
二是使用dict本身提供的一个 get() 方法,在Key不存在的时候,返回None:
例如d.get('test')为None
<6>不同key但是相同value的字典:
d = {}.fromkeys((
'lrh'
,
'zjg'
,
'kch'
,
'gyg')
,
2333)
<7>使用zip():
keys = [
'name'
,
'age']
values = [ 'Bill' , 60]
d = dict( zip(keys , values))
print(d)
values = [ 'Bill' , 60]
d = dict( zip(keys , values))
print(d)
zip([seql, ...]
)接受一系列可迭代对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。
大家可以help()一下
<8>字典的格式化字符串:
d = {'Wangdachui':3000, 'Niuyun':2000} template = ''' welcome to the pay wall. Niuyin's salary is %(Niuyun)s. Wangdachui's salary is %(Wangdachui)s. ''' print(template%d)
<9>
字典的一些内建函数:
定义d为一个非空字典
那么:
d.keys() 返回一个key的列表
d.value() 返回一个value的列表
d.get(key) 如果存在key这个名字的键值对,则返回,否则返回空
定义d1为另一个非空字典,那么:
d.update(d1) 如果d中含有与d1中相同键名的键值对,则将它更新成与d1的值一样,此外d1中一些d中所没有的键值对也将补充到d中
python中的set
<1>set中文名字为集合,set存储的是无序集合,集合即每个相同的元素只有一个. 可变集合(set),不可变集合(frozenset)
<2>s = set([xx, xx, xx, xx, xxx]) 给set传入一个list,会去重
<3>可以用in操作符来判断元素时候在set里
<4>add()方法增加新元素, remove()方法删除元素,若没有这个元素则会报错
<5>集合运算关系:
交:&
并:|
差:-
异或:^
<6>discard()方法,传入一个key,若存在这个键值对,则删除这个键值对,否则什么都不做,而pop()方法,如果删除一个不存在的键值对,将会抛出一个KeyError
定义可变参数函数:
def fn(*args):
print(args)
这样就可以传入0个,1个或多个参数给可变变量。本质上,解释器会把传入的一组参数组装成一个tuple传递给可变参数。
举一个应用的例子:
def average(*args)
那么调用的时候就会十分的方便。如:average(1) average(1, 2) average(1, 2, 3)
def
average(*args):
cnt = 0
total = 0
for each in args:
cnt += 1
total += each
return total/cnt
print(average( 1 , 2 , 3))
cnt = 0
total = 0
for each in args:
cnt += 1
total += each
return total/cnt
print(average( 1 , 2 , 3))
或者:
def
average(*args):
return sum(args)/ len(args)
print(average( 1 , 2 , 3 , 4))
return sum(args)/ len(args)
print(average( 1 , 2 , 3 , 4))
python map()函数:
map()是python内置的高阶函数,它接收一个函数f和一个list,并且把函数f依次作用在list的每个元素上,返回一个iterators,可以这样处理list(map())变成list
举个例子:
def
fn(x):
return x*x
mylist = map(fn , [ 1 , 2 , 3 , 4])
mylist = list(mylist)
print( type(mylist))
for each in mylist:
print(each)
return x*x
mylist = map(fn , [ 1 , 2 , 3 , 4])
mylist = list(mylist)
print( type(mylist))
for each in mylist:
print(each)
由于返回的是iterator,所以也可以不用list()转换。
python reduce()函数:
reduce()函数是python内置的一个高阶函数。reduce()函数和map()类似,一个函数f,一个list,但行为和map()不同,reduce传入的函数f必须接收两个参数,
reduce对list的每个元素反复调用函数f,并返回结果
举个例子:(答案为24)
from functools
import reduce
def fn(x , y):
return x*y
ans = reduce(fn , [ 1 , 2 , 3 , 4])
print(ans)
def fn(x , y):
return x*y
ans = reduce(fn , [ 1 , 2 , 3 , 4])
print(ans)
reduce()是这样运行的:
先计算头两个元素:f(1, 2),结果为2;
再把结果和第3个元素计算:f(2, 3),结果为6;
再把结果和第4个元素计算:f(6, 4),结果为24;
或者给reduce加入第3个参数作为计算的初始值,答案为2400
from functools
import reduce
def fn(x , y):
return x*y
ans = reduce(fn , [ 1 , 2 , 3 , 4] , 100)
print(ans)
def fn(x , y):
return x*y
ans = reduce(fn , [ 1 , 2 , 3 , 4] , 100)
print(ans)
python strip()函数:(非高阶函数,顺带一提)
s.strip(rm) 删除s字符串中开头、结尾处,位于rm删除序列的字符
s.lstrip(rm)删除s字符串开头处,位于rm删除出序列中的字符,rstrip()类推.
当rm为空时,默认闪删除空白符(包括'\n', '\r', '\t', ' ')
python filter()函数:
filter函数接收一个函数f和一个list,函数f的作用是对每个元素进行判断,返回True或者False,filter()根据判断结果自动过滤掉不符合条件的元素,返回符合要求的元素组成的list
举个很常用的例子:
def
deleteNone(s):
return s and len(s.strip())> 0
mylist = filter(deleteNone , [ 'test' , None , '' , 'str' , ' ' , 'END'])
for each in mylist:
print(each)
return s and len(s.strip())> 0
mylist = filter(deleteNone , [ 'test' , None , '' , 'str' , ' ' , 'END'])
for each in mylist:
print(each)