目录
列表的一些方法:
list添加方法:
list.append(obj) : 作用: 将某元素添加在列表的最后 参数:所有类型(无论什么类型,都按照 原类型将其添加) 无返回值
demo = [1,2,3] demo.append([4,5,6]) print(demo) # [1,2,3,[4,5,6]]
list.extend(obj) : 作用:在列表的末尾将新元素添加
demo = [1,2,3] demo.extend([4,5,6]) print(demo) # [1,2,3,4,5,6]
list.insert(index , object) : 作用:在指定位置添加某元素(该元素的索引则是指定位置的索引值) 无返回值
注意:当index大于实际列表的索引时,则会将该元素添加到列表的末尾,并不会抛出错误
demo = [1,2,3,4] demo.insert(0 , 'demo') print(demo) # ['demo', 1 ,2, 3, 4]
list删除方法:
list.remove() : 作用 : 移除指定元素
del list[索引] : 作用: 移除指定元素
list.pop(index) : 作用 : 移除指定索引的元素,并返回该元素(如index为空,则移除最后一个) 返回值:被移除元素的类型
list.popleft(): 作用 :从左边开始移除指定索引的元素,并返回该元素(如index为空,则移除第一个)
注意:当Index大于实际列表的索引时,则会抛出越界错误 IndexError: pop index out of range
popleft() 方法必须导入 from collections import deque ,必须使用 deque()方法创建列表
demo = [1,2,3] demo_ = demo.pop(1) print(demo) print(demo_) # [1,3] # 2
from collections import deque demo = deque([1,2,3]) count = 0 all_count = len(demo) while count < all_count: print(demo.popleft()) count += 1 # 1 2 3
list.clear() 作用:清空列表
list修改方法:
list[索引] = ‘新值’
list查找方法:
list[索引]
int index(值) : 作用 : 返回值的索引
list其他方法:
list.sort() : 作用:对列表进行排序 参数:reverse (默认是False--升序,,如果为True---降序) 无返回值
list.reverse() : 作用 :将列表元素倒序输出,但并不会进行排序 无参 无返回值
list.count('') : 作用:统计出现的次数
列表作为堆栈使用
实现弹栈(先进的后出)
def resavea():
demo = input("请输入内容:")
demo_2 = list(demo)
num = 0
demo_2_length = len(demo_2)
while num < demo_2_length:
print(demo_2.pop(), end=", ")
num += 1
实现队列(先进先出)
def demo2():
demo = [1,2,3]
count = 0
all_count = len(demo)
while count < all_count :
print(demo[0])
demo.remove(demo[0])
count += 1
列表推导式
简单的说就是,对每一个元素进行一些操作(加减乘除,if,while,),最后组成新的列表
demo = [1,2,3]
new_demo = [de*2 for de in demo ]
new_demo2 = [de*2 for de in demo if de >= 2] #会去先判断每个de满不满足条件,满足才输出
old_demo = [[de*2,de] for de in demo]
print(new_demo)
print(new_demo2)
print(old_demo)
# [2,4,6]
# [4, 6]
# [[2, 1], [4, 2], [6, 3]]
demo = [1,2,3]
demo2 = [4,5,6]
new_demo = [x*y for x in demo for y in demo2]
print(new_demo)
# ——————等同于——————
demo3 = []
for x in demo:
for y in demo2:
a = x * y
demo3.append(a)
print(demo3)
# [4, 5, 6, 8, 10, 12, 12, 15, 18]
# [4, 5, 6, 8, 10, 12, 12, 15, 18]
字典:
(dict)不可哈希,属于可变数据。
查找速度最快,因为可以根据键直接找到值,而列表需要从第一个开始遍历。
键是不可变的,也是唯一的。
dict增加方法:
dict setdefault(key,default=None) : 作用:返回该键的值,,如果键不存在,则将键以及default对应的值作为键值对存入字典
dic = {'A':1,'B':2,'C':3} dic.setdefault('我是新添加的键','我是新添加的值') print(dic) # {'A': 1, 'B': 2, 'C': 3, '我是新添加的键': '我是新添加的值'}
dict[键 ] = 值 : 如果键不存在,则将该键值对添加进去。 如果键存在,则修改值。
dic = {'A':1,'B':2,'C':3} dic['我是新添加的键'] = '我是新添加的值' print(dic) # {'A': 1, 'B': 2, 'C': 3, '我是新添加的键': '我是新添加的值'}
dict删除方法:
pop(key,default) : 删除指定键的值,返回值为被删除的值(如果default定义了其他变量,则返回default的值)。
如果该键不存在,但是default没有定义,则会报错 。如果default定义了,即使键不存在,也返回default的值
dic = {'A':1,'B':2,'C':3} print(dic.pop('D',"我被删了")) dic2 = {'A':1,'B':2,'C':3} print(dic2.pop('A',"我被删了"))
popitem() : 随机删除一对键和值。 (题外话:因为在Python3.6版本后,字典输出是按照输入顺序输出的。所以 popitem()方法一直删 除的是最后一对。但实际情况下,字典是无序的)
dic = {'A':1,'B':2,'C':3} dic.popitem() print(dic) # {'A': 1, 'B': 2}
clear() : 清空字典
del dic["A"] : 删除存在的键值对 不存在则报错 注意:(如果是 del dic。。则会将 dic 这个字典从内存中去除掉)
dic = {'A':1,'B':2,'C':3} del dic['A'] print(dic) # {'B': 2, 'C': 3}
dict修改方法:
dic [存在的键名] = 修改后的值
dic = {'A':1,'B':2,'C':3} dic['A'] = "我是修改后的值" # {'A':"我是修改后的值",'B':2,'C':3}
update(dict2) : 作用:将字典2的键值对填充到字典1里面 键名重复的则值覆盖
dic = {'A':1,'B':2,'C':3} dic2 = {'A':1,'B':3,'C':4} dic.update(dic2) print(dic) # {'A': 1, 'B': 3, 'C': 4}
dict查找方法:
dic["键名"]
get(key,default = None) : 作用 : 查找键的值, 如果键不存在,则返回default的值 根据键找值
#---根据值找键--- a = "a" dic = {4:"a",2:"b",6:"a"} lis_key = dic.keys() for key_li in lis_key: if dic.get(key_li) == a: print(key_li) # 4
dict其他方法:
keys() : 返回所有键 可转换为列表 (是一个高仿列表,只能使用for循环)
values() : 返回所有值 可转换为列表 (是一个高仿列表,只能使用for循环)
items() : 返回一个所有键值的元组数组
** formkeys (seq[] , value[]) : 创建一个新字典,seq为键,value为值
注意:这个方法有坑 当 value 是一个列表或集合,字典 (可变类型)时 ,,,,但对字典中的任何一个键的值进行修改时,其他所有的也会跟着发生变化
dic = dict.fromkeys(['a','b','c']) print(dic) dic = dict.fromkeys(['a','b','c'],['1','2']) dic['a'].append('3') print("(列表)所有的都会变:",dic) dic = dict.fromkeys(['a','b','c'],{'1':'a','2':'b'}) dic['a']['1'] = '3' print("(字典)所有的都会变:",dic) # {'a': None, 'b': None, 'c': None} # (列表)所有的都会变: {'a': ['1', '2', '3'], 'b': ['1', '2', '3'], 'c': ['1', '2', '3']} # (字典)所有的都会变: {'a': {'1': '3', '2': 'b'}, 'b': {'1': '3', '2': 'b'}, # 'c': {'1': '3', '2': 'b'}}
元组:
元素不能修改
注意:
demo = ("")
print(type(demo))
demo2 = ("", )
print(type(demo2))
# <class> str
# <class> tuple
集合:
无序(没有下标),不重复,
首次创建集合 必须使用 set()
set添加方法:
add() : 添加元素
update() : 给集合添加元素
set删除方法:
remove() : 删除指定元素
pop(): 移除随机元素
clear() : 清空
set修改方法:
先删后加
set查找方法:
for循环遍历
- 列表 /字典循环删除或添加元素
# 第一种方式:
li = ['1','2','3','4']
for i in range(len(li)):
li.remove(i)
print(li)
# 第二种方式:
li = ['1','2','3','4']
li2 = []
for i in li:
li2.append(i)
for j in li2:
li.remove(j)
print(li)
# 第三种方式,不推荐
li = ['1','2','3','4']
for i in li:
li.clear()
print(li)
如果需要通过for循环进行对字典的删除操作:
dic = {'a':1,'b':2,"c":3}
li = []
for i in dic:
li.append(i)
for j in li:
dic.pop(j)
print(dic)