初级 Python 学习笔记(1)

python 元组 操作及方法

一、元组

是一个固定长度,不可改变的Python序列对象

a,从元组的开头“摘取”几个元素

  a,b,*_=(1,2,3,4,5,6,7)

  in: a

  out :1

  in :b

  out: 2

  in: *_

  out :(3,4,5,6,7)

b,tuple的count方法

  a=(2,3,4,5,5,5,5,6,7)

  in:a.count(5) #获取5出现的次数

  out:4

二、列表

a.列表是内容可变,长度可变的 pytyon对象

  In [36]: a_list = [2, 3, 7, None]

    In [37]: tup = ('foo', 'bar', 'baz')
    In [38]: b_list = list(tup)
  #列表内容可修改
  In:b_list[0]="nba"
  In:b_list
  out:("nba","bar","baz")
b,列表和元组的语义接近,在许多函数中可以交叉使用。

list函数常用来在数据处理中实体化迭代器或生成器:

  In [42]: gen = range(10)
  In [43]: gen
  Out[43]: range(0, 10)
 
  In [44]: list(gen)
  Out[44]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
c,bisect的使用
#bisect模块支持二分查找,和向已排序的列表插入值。bisect.bisect可以找到 插入值后仍保证排序的位置,bisect.insort是向这个位置插入值:
In [67]: import bisect

In [68]: c = [1, 2, 2, 2, 3, 4, 7]

In [69]: bisect.bisect(c, 2)
Out[69]: 4

In [70]: bisect.bisect(c, 5)
Out[70]: 6

In [71]: bisect.insort(c, 6)

In [72]: c
Out[72]: [1, 2, 2, 2, 3, 4, 6, 7]
#注意:bisect模块不会检查列表是否已排好序,进行检查的话会耗费大量计算。因此,对未排序的列表使用bisect不会产生错误,但结果不一定正确。

 d,切片

用切边可以选取大多数序列类型的一部分,切片的基本形式是在方括号中使用start:stop

In [73]: seq = [7, 2, 3, 7, 5, 6, 0, 1]
In [74]: seq[1:5]
Out[74]: [2, 3, 7, 5]
切片的起始元素是包括的,不包含结束元素。因此,结果中包含的元素个数是stop - start

负数表明从后向前切片:

In [79]: seq[-4:]
Out[79]: [5, 6, 0, 1]
In [80]: seq[-6:-2]
Out[80]: [6, 3, 5, 6]
 
三、字典
字典可能是Python最为重要的数据结构。它更为常见的名字是哈希映射或关联数组。它是键值对的大小可变集合,键和值都是Python对象。创建字典的方法之一是使用尖括号,用冒号分隔键和值:
In [101]: empty_dict = {}
 
In [102]: d1 = {'a' : 'some value', 'b' : [1, 2, 3, 4]}
 
In [103]: d1
Out[103]: {'a': 'some value', 'b': [1, 2, 3, 4]}
可以用del关键字或pop方法(返回值的同时删除键)删除值:
In [112]: del d1[5]
In [114]: ret = d1.pop('dummy')
 

keysvalues是字典的键和值的迭代器方法。虽然键值对没有顺序,这两个方法可以用相同的顺序输出键和值:

In [117]: list(d1.keys())
Out[117]: ['a', 'b', 7]
In [118]: list(d1.values())
Out[118]: ['some value', [1, 2, 3, 4], 'an integer']
 

update方法可以将一个字典与另一个融合:

In [119]: d1.update({'b' : 'foo', 'c' : 12})
In [120]: d1
Out[120]: {'a': 'some value', 'b': 'foo', 7: 'an integer', 'c': 12}

update方法是原地改变字典,因此任何传递给update的键的旧的值都会被舍弃。

用序列创建字典

常常,你可能想将两个序列配对组合成字典。下面是一种写法:

mapping = {}
for key, value in zip(key_list, value_list):
mapping[key] = value

因为字典本质上是2元元组的集合,dict可以接受2元元组的列表:

In [121]: mapping = dict(zip(range(5), reversed(range(5))))
 
In [122]: mapping
Out[122]: {0: 4, 1: 3, 2: 2, 3: 1, 4: 0}
 
后续=》setdefault

猜你喜欢

转载自www.cnblogs.com/daniel-niu/p/10831309.html