美文网首页
python容器类型

python容器类型

作者: 发家致富靠养猪 | 来源:发表于2018-11-13 17:57 被阅读0次

一.列表相关方法

1.列表赋值

a.直接使用一个列表变量给另一个列表变量赋值,赋的是地址,赋完值之后对其中一个列表进行增删改会影响另一个列表
list1 = [1,2,3]
list2 = list1
list2.append(100)
print(list1)#[1, 2, 3, 100]
b.如果如果赋值的时候赋的是列表的切片或者拷贝,会产生新的地址,然后将新的地址去赋值,去使用新的地址赋值。

赋完值后两个列表之间相互不影响

list1 = [1,2,3]
list2 = list1[:]
list2.append(100)
print(list1)#[1, 2, 3]

2.关于列表的方法

1.列表.count(元素) - 获取指定元素在列表出现的次数
2.列表1.extend(序列) - 将序列中所有的元素添加到列表1中

            list1 = [1,2,3]
            list2 = [1,2,3]
            list1.extend(list2)
            print(list1)

3.列表.index(元素) - 获取指定元素在列表中的下标

  • 注意:
    a.如果元素有多个,只取第一个的下标
    b.如果这个元素不存在,或报错

4.列表.reverce() - 将列表倒序

     list1 = [1,2,3]
     list1.reverce()
     print(list1)

5.列表.sort() - 对列表进行升序排序(从小到大)

list1 = [5,2,3,8,1]
list1.sort()
print(list1)

对列表进行降序(从大到小)

    list1 = [5,2,3,8,1]
    list1.sort(reverce = Ture)
    print(list1)
  • 注意:
    a.列表元素类型相同
    b.元素支持比较运算符

6.列表.clear() - 清空列表

7.列表.copy() - 将列表中的元素赋值一份产生一个新的列表 和列表[:]效果一样

注意:这的拷贝是浅拷贝

8.深拷贝

import copy
'''
copy.copy(对象) - 浅拷贝
copy.deepcopy(对象) - 深拷贝 (不会直接复制地址,而是将地址对应的值拷贝一份产生新的地址)
'''
#深拷贝
numbers1 = [1,2,3]
numbers2 = [10,20,30]
list1 = [numbers1,numbers2]
list2 = copy.deepcopy(list1)
print(list1,list2)
list1.append(101)
list1[0].append(100)
print(list1)
print(list2)

numbers1 = [1,2,3]
list2 = copy.deepcopy(numbers1)
print(numbers1[0] is list2[0])
print((id(numbers1[0])))
print((id(list2[0])))

二.元祖

1.什么是元祖(tuple)

  • 元祖就是不可变的列表,(有序,不可变)
    有序 - 可以通过下标获取元素
    不可变 - 不支持 增 删 改

2.元祖的字面量:通过小括号将多个元素括起来,多个元素之间用都好隔开

a.只有一个元素的元祖:小括号中的元素后必须加一个逗号
 tuple = (10,)
b.去掉小括号,直接将多个数据用逗号隔开,也表示一个元祖值
tuple = 1,2,3,'gs'
c.获取元祖元素
tuple = (10,20)
print(tuple[0])
可以通过变量个数和元祖个数保持一致来获取元祖的每个元素
x,y = tuple
print(x,y)

3.获取元祖的元素和列表元素一样

tuple3 = ('hs','df',2,3,4)
print(tuple3[1])
print(tuple3[:3])

for item in tuple3:
    print(item)

4.相关运算 和列表一样

+,*,in/not in , len(),tuple(),max/min()

5.元祖相关方法 只有列表中的 count和index。

三.字典

1.什么是字典

字典是python中内置的容器类数据类型,可变,无序的,字典的元素是键值对

2.字典的字面量:使用大括号括起来。大括号中是键值对,多个键值对之间用逗号隔开

  • 键值对 - 键:值(key:value)
    键 -不可变的任何数据,唯一的 (一般使用字符串)
    值 - 任何类型的数据

  • 什么时候使用字典
    如果一个容器里面存储的数据是不同意义的数据(数据之间需要区分)就是要字典

#用一个变量来存储一个学生的信息:姓名,年龄,电话,成绩,学号
student1 = {'name':'小虎','tel':'123132','age':'18','score':'88'}
print(student1['age'])

dict3 = {'s':[66,55,{'x':['张三','李四']}]}
print(dict3.get('x'))

3.字典的增,删,改,查

  • 1.查(获取字典的值)

a.获取单个值
  • 字典[key] - 获取字典中key对应的值(注意:如果key不存在,会报错:KeyError)
  • 字典.get(key) - 获取字典中key对应的值(如果key不存在,不会报错,但会返回一个默认值:None)
  • None:是python中的一个关键字,表示一个特殊值。(没有,空的意思)
dog1 = {'name':'旺财','age':'5岁','color':'黄色','type':'土狗'}
print(dog1['name'])
print(dog1['type'])
print(dog1.get('age'))
b.遍历
#直接遍历字典拿到的是字典中所有的key
for key in dog1:
    print(key,dog1[key])
#同时获取key和value(看着方便,但性能差,内存消耗多)
for key,value in dog1.items():
    print(key,value)

2.增(添加键值对)

字典[key] = 值 - 当key不存在时,就是在字典中添加键值对

dict2 = {'a':'100'}
dict2['b'] = 250
print(dict2)

  • 字典1.update(序列)- 将序列中的元素转换成键值对,添加到字典1中
  • 注意:在这儿的序列要求是能够转换成字典的序列,序列中的元素是只有两个元素的小序列
#当key值有重名的时候,会用序列中键值对对应的值,更新原字典的key对应的值

dict3 = {'a': '100', 'b': 250}
dict3.update({'aa':'12','a':'45'})

3.改(修改key对应的值)

  • 字典[key] = 值 - 当key存在的时候就修改key对应的值
dict4 = {'a': '100', 'b': 250}
dict4['b'] = 150
print(dict4)

4.删(删除键值对)

a.del 字典[key] - 删除字典中key对应的键值对
dict4 = {'a': '100', 'b': 250}
del dict4['a']
print(dict4)
b.字典.pop(key) - 取出字典中key对应的值,删除整个键值对
dict6 = {'a': '100', 'b': 250}
c = dict6.pop('b')
print(dict6,c)

#删除最后一个键值对(取出最后一个键值对,以元祖的形式返回)
dict6 = {'a': '100', 'b': 250,'c': '100'}
value = dict6.popitem()
print(dict6)

4.字典相关运算符方法

  • 1.字典不支持 + 和 *

  • 2.in 和 not in

key in 判断字典中是否存在指定的key

dict1 = {'a': 12, 'b': 20, 'c': 30}
print('a' in dict1)

相关文章

网友评论

      本文标题:python容器类型

      本文链接:https://www.haomeiwen.com/subject/tjblfqtx.html