1.列表特点:

a.中括号括起来

b.逗号分隔每个元素

c.列表中的元素可以是数字、字符串、列表、布尔值……所有的都能放进去

d.列表是一个集合,内部可以放置任何东西

e.可以通过索引取值,可以一直往里找

li = [1, 2, 3, ['yu', 'gh', 'jk', ['py', 16, 'op'], 23], True, 'cyx']
v = li[3][3][0][1]
print(v)

f.可以通过切片取值,切片结果也是列表

li = [1, 2, 3, ['yu', 'gh', 'jk', ['py'], 23], True]
print(li[3])
print(li[2:4])

g.支持for循环,支持while循环

li = [1, 2, 3, ['yu', 'gh', 'jk', ['py'], 23], True, 'cyx']
for item in li:
print(item)

h.字符串一旦创建不可修改,列表元素可以被修改,因为列表在内存中是以链表的形式存储,链表表示各元素在内存中不连续,但上一个元素的位置会同时存储下一个元素的位置信息,可以通过索引或切片的方式修改

字符串可以通过索引取值,但是不能修改这个值(因为字符串创建后不可更改)

列表既可以通过索引取值,也可以通过索引修改这个值

li = [1, 2, 3, ['yu', 'gh', 'jk', ['py'], 23], True, 'cyx']
li[1] = [11, 22, 33, 44]
print(li)
li = [1, 2, 3, ['yu', 'gh', 'jk', ['py'], 23], True, 'cyx']
li[1:3] = [20, 30]
print(li)

i.删除,可以通过索引或切片删除

li = [1, 2, 3, ['yu', 'gh', 'jk', ['py'], 23], True, 'cyx']
del li[1]
print(li)
li = [1, 2, 3, ['yu', 'gh', 'jk', ['py'], 23], True, 'cyx']
del li[0:4]
print(li)

j.支持in操作

li = [1, 2, 3, ['yu', 'gh', 'jk', ['py'], 23], True, 'cyx']
v = 20 in li
print(v)

k.字符串转换成列表,list在内部使用for循环

s = 'qwertyuioopasdfghjkl'
v = list(s)
print(v)

l.因为数字不能进行for循环,而列表在转换时利用的就是for循环,所以数字不能用list转换为列表

m.列表转换为字符串

m1.写for循环:列表里既有数字,也有字符串

s = ''
li =[11, 22, 33, '123', 'alex']
for i in li:
s = s + str(i)
print(s)

s = ''
li = [1, 2, 3, ['yu', 'gh', 'jk', ['py', 16, 'op'], 23], True, 'cyx']
for i in li:
s = s + str(i)
print(s)

m2.用str转换只能在列表整体加'',不能去掉列表内部逗号

li = [1, 2, 3, ['yu', 'gh', 'jk', ['py', 16, 'op'], 23], True, 'cyx']
v = str(li)
print(v)

m3.''.join():只有字符串时可以使用

li =['123', 'alex']
s = ''.join(li)
print(s)

o.在python里none表示空值 ,iterable表示可迭代的对象(字符串、聊表)

p.append:原来值最后追加

li = [11, 22, 33, 44]
li.append(5)
print(li)

q.clear:清空

li = [11, 22, 33, 44]
li.clear()
print(li)

r.copy:浅拷贝

li = [11, 22, 33, 44]
v = li.copy()
print(v)

 s.count:计算元素出现的次数

li = [11, 22, 33, 44, 22]
v = li.count(22)
print(v)

t.extend:扩展原列表,内部有执行for 循环,所以参数需为可迭代对象

append:把参数当成整体追加

li = [11, 22, 33, 44, 22]
li.append([5656, 'cyx'])
print(li)

li = [11, 22, 33, 44, 22]
li.extend([5656, 'cyx'])
print(li)

li = [11, 22, 33, 44, 22]
for i in [5656, 'cyx']:
li.append(i)
print(li)
li = [11, 22, 33, 44, 22]
li.extend('集合吧')
print(li)

u.index: 根据值获取当前值索引位置,默认左边优先,找到第一个就不找了,可以设置起始和结束位置

li = [11, 22, 33, 44, 22]
v = li.index(22)
print(v)

v.insert :在指定索引位置插入元素

li = [11, 22, 33, 44, 22]
li.insert(2, 'cyx')
print(li)

w. pop 默认删除最后一个值,并获取删除的值,可以加索引指定删除

li = [11, 22, 33, 44, 22]
v = li.pop()
print(li)
print(v)
li = [11, 22, 33, 44, 22]
v = li.pop(3)
print(li)
print(v)

 x.remove删除列表中的指定值,左边优先

li = [11, 22, 33, 44, 22]
li.remove(22)
print(li)

  注: pop remove del[0]  del[0:3]  clear都表示删除

y.reverse将当前列表进行翻转、颠倒

li = [11, 22, 33, 44, 22]
li.reverse()
print(li)

z.sort 排序,默认从小到大排序

列表是有序的,元素可以被修改

li = [11, 22, 33, 44, 22]
li.sort()
print(li)

li = [11, 22, 33, 44, 22]
li.sort(reverse = True)
print(li)

 2.元组:对列表的二次加工,书写格式为加(),元素不可被修改,不能被增加或者删除

一般写元组的时候,在最后一位加,,不会报错,为了将元组和参数区分开来

 a.索引取值,可以一直往里找

tu = (11, 22, 33, 44, 22)
v = tu[0]
print(v)
tu = (11, 22, 33, [(33,44)], 44, 22,)
v = tu[3][0][0]
print(v)

b.切片取值,结果仍是元组 

tu = (11, 22, 33, 44, 22)
v = tu[0]
print(v)

c.for 循环,所以元组也属于可迭代对象

tu = (11, 22, 33, 44, 22)
for item in tu:
print(item)

d.字符串、列表、元组都是可迭代对象,字符串和列表都可以转换成元组

li = [11, 22, 33, 44, 22]
v = tuple(li)
print(v)
s = 'sgjdkhie'
v = tuple(s)
print(v)

元组转换为列表

tu = (11, 22, 33, 44, 22)
v = list(tu)
print(v)

元组转换为字符串

1)元素都是字符串时

tu = ('hui', 'qwe')
v = ''.join(tu)
print(v)

2)元素为字符串和数字组合时,需写for 循环

s = ''
tu = (123, 'qwe')
for i in tu:
s = s + str(i)
print(s)

e.元组也是有序的

f.元组的一级元素不可修改、删除、增加

tu = (11, 22, 33, [(33,44)], 44, 22,)
tu[3][0] = 567
print(tu)
[(33,44)]中的33不可修改,因为它属于(33,44)的一级元素

g.count:获取指定元素在元组中出现的次数

h.index获取某个值得索引位置

3.字典dict:

a.基本结构

逗号分隔,一个元素称为键值对

键值对中的value可以是任何值,可以嵌套

数字、字符串、元组(不能被修改)、布尔值(可能会和0,1重复)可以做为key值,列表(动态的)不可以作为字典的key

字典保存时是按照哈希表来保存的,字典在内存中生成的是一张表格,key到内存里会转换成一堆数字和数字有对应关系

创建字典:

info = {'k1': 'v1', 'k2': 'v2'}

b.字典是无序的,每次print,元素顺序会变

c.索引方式找到指定值

info = {'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33,{'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
v = info['k1']
print(v)
info = {'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33,{'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
v = info['k3'][5]['kk3'][0]
print(v)

d.支持del删除

info = {'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33,{'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
del info['k1']
print(info)
info = {'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33,{'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
del info['k3'][5]['kk1']
print(info)

e.不支持while循环,支持for 循环,默认for循环时只输出key,也可以定义只输出value,也可以定义获取键值对

info = {'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33,{'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
for item in info:
print(item)
info = {'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33,{'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
for item in info.keys():
print(item)
info = {'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33,{'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
for item in info.values():
print(item)
info = {'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33,{'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
for k, v in info.items():
print(k, v)

e.k值重复时,只能保留一个;布尔值和0或1重复时,也无法显示;没有0或1时,布尔值可以正常显示

info ={ 1: 'asdf', "k1": 'asdf','k1': "123",(11,22): 123,}
print(info)
info ={ 1: 'asdf', "k1": 'asdf', True: "123",(11,22): 123,}
print(info)
info ={ 7: 'asdf', "k1": 'asdf', True: "123",(11,22): 123,}
print(info)

f.clear/copy

g.fromkeys根据序列创建字典,并且指定统一的值

dic ={ 'k1': 'v1', "k2": 'v2'}
v = dict.fromkeys(['qw', 123, 'uio'], 123)
print(v)
dic ={ 'k1': 'v1', "k2": 'v2'}
v = dict.fromkeys('dffhkji', 123)
print(v)

h.通过索引的方式取key,若key不存在会报错

通过get方式取key,若key不存在会输出空值,不会报错,还可以指定第二个参数,表示如果key不存在,默认把第二个参数返回,key值存在的话,会直接忽略第二个参数

dic = {'k1': 'v1', "k2": 'v2'}
v = dic.get('k333')
print(v)
dic = {'k1': 'v1', "k2": 'v2'}
v = dic.get('k333', 1111)
print(v)

i.pop删除的同时,可以获得删除的value,参数可以加默认值,当key不存在时,会将默认值返回

dic = {'k1': 'v1', "k2": 'v2'}
v = dic.pop('k1')
print(dic, v)
dic = {'k1': 'v1', "k2": 'v2'}
v = dic.pop('k1111', 'lop')
print(dic, v)

j.popitem不加参数,随机删键值对,并获取值

dic = {'k1': 'v1', "k2": 'v2'}
v = dic.popitem()
print(dic, v)
dic = {'k1': 'v1', "k2": 'v2'}
k, v = dic.popitem()
print(dic, k, v)

k.setdefault的功能为设置值,如果key已经存在,不设置,但会获取当前key对应的value;如果key不存在,则会设置,并获取当前key对应的值

dic = {'k1': 'v1', "k2": 'v2'}
v = dic.setdefault('k1', 123)
print(dic, v)
dic = {'k1': 'v1', "k2": 'v2'}
v = dic.setdefault('k1111', 123)
print(dic, v)

l.update已经存在的覆盖掉,不存在的更新进去,用两种调用方式

dic = {'k1': 'v1', "k2": 'v2'}
dic.update({'k1': 123, 'k3': 'uiop'})
print(dic)
dic = {'k1': 'v1', "k2": 'v2'}
dic.update(k1=123, k2=456, k3='klj')
print(dic)

m.支持in操作,默认判断key

dic = {
"k1": 'v1'
}

v = "k1" in dic
print(v)

v = "v1" in dic.values()
print(v)

n.enumerate用法:同时获得索引和值

list1 = ["这", "是", "一个", "测试"]

for index, item in enumerate(list1):

    print index, item

>>>

0 这

1 是

2 一个

3 测试

 

 list1 = ["这", "是", "一个", "测试"]

for index, item in enumerate(list1, 1):

print index, item

>>>

1 这

2 是

3 一个

4 测试

 4.数据类型和变量总结

a.按可变不可变分

重新赋值后,用id(变量名)查看,id地址改变,说明其为不可变,修改其值,id地址不变,说明其为可变

可变:列表  字典

不可变:字符串  数字  元组

b.按访问顺序分

按索引顺序访问:元组字符串  列表  

key value映射方式访问:字典

直接访问:数字

c.存放元素个数

容器类型:列表  元组  字典

原子类型:数字  字符串

 

字典查询速度比列表快,但字典占得内存高

 

必须要背的:

一、数字
int(..)
二、字符串
replace/find/join/strip/startswith/split/upper/lower/format
tempalte = "i am {name}, age : {age}"
# v = tempalte.format(name='alex',age=19)
v = tempalte.format(**{"name": 'alex','age': 19})
print(v)
三、列表
append、extend、insert
索引、切片、循环
四、元组
忽略
索引、切片、循环 一级元素不能被修改
五、字典
get/update/keys/values/items
for,索引
六、布尔值
0 1
bool(...)
None "" () [] {} 0 ==> False
dic = {
'植物':
{'草本植物':
['牵牛花', '瓜叶菊', '葫芦', '翠菊', '冬小麦', '甜菜'],
'木本植物':
['乔木', '灌木', '半灌木', '如松', '樟'],
'水生植物':
['荷花', '千屈菜', '菖蒲', '黄菖蒲', '水葱', '再力花', '梭鱼草']},
'动物':
{'两栖动物':
['山龟', '山鳖', '石蛙', '娃娃鱼', '蟾蜍', '龟', '鳄鱼', '蜥蜴', '蛇'],
'禽类':
['雉鸡', '原鸡', '长鸣鸡', '昌国鸡', '斗鸡', '长尾鸡', '乌骨鸡'],
'哺乳类动物':
['虎', '狼', '鼠', '鹿', '貂', '猴', '梭鱼草', '貔', '树獭', '斑马', '狗']}}

 

 

 

 

 


posted on 2018-04-23 20:42  吃猫粮的狗  阅读(300)  评论(0编辑  收藏  举报