python3中的一些数据结构和高阶函数(python3.5)

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)

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))

或者:
def  average(*args):
    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)

由于返回的是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)
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)



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 and  len(s.strip())> 0

mylist =  filter(deleteNone [ 'test' None '' 'str' ' ' 'END'])

for each  in mylist:
    print(each)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值