列表list
Python的列表与其他语言的列表相似,可以:
- 容纳不同类型的数据
- 切割列表
- 拼接操作
- 直接改变其中元素(单个或者某区间元素),包含修改和移除
- 在末尾添加新项
- 容纳不同类型的数据
列表索引从0开始
# -*- codeing = utf-8 -*-
# @Time :2021/6/22 8:58
# @File : demo2.py
# @Author :Yannick Li
array=["Hello",'h',1,4,[3,5,"yzr"]]
print(array)
print(array[1])
print(array[len(array)-1])
print(array[len(array)-1][2])
--------------------
运行结果:
['Hello', 'h', 1, 4, [3, 5, 'yzr']]
h
[3, 5, 'yzr']
yzr
- 获取列表元素和下标
enumerate() :将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
str_list=["第一个元素","第二个元素","第三个元素","第四个元素"]
print("下标","value")
for i,str in enumerate(str_list):
print(i,str)
---------------------
运行结果
下标 value
0 第一个元素
1 第二个元素
2 第三个元素
3 第四个元素
- 切割列表
str1=["第一个元素","第二个元素","第三个元素","第四个元素"]
print(str1[1])
print(str1[-1])
print(str1[1:])
print(str1[-2:])
---------------------
运行结果
第二个元素
第四个元素
['第二个元素', '第三个元素', '第四个元素']
['第三个元素', '第四个元素']
- 拼接操作
可以直接用“ + ”对list进行拼接,也可以使用函数extend()在列表后方拼接。
str1=["nihao",1,3]
str2=str1+["China","good"]
str2.extend(["ex1","ex2"])
print(str2)
---------------------
运行结果
['nihao', 1, 3, 'China', 'good', 'ex1', 'ex2']
- 直接改变其中元素(单个或者某区间元素),包含修改和移除
str1=["第一个元素","第二个元素","第三个元素","第四个元素"]
str1[1]="改变"+str1[1]
str1[2:]=["改变了1111","改变了2222","哈哈哈"]
print(str1)
str1[3:]=[] #移除
print(str1)
del str1[0] #删除第一个元素
print(str1)
str1.clear() #全部清空
print(str1)
del str1 #删除列表
print(str1) #此时列表不存在,会报错
---------------------
运行结果
['第一个元素', '改变第二个元素', '改变了1111', '改变了2222', '哈哈哈']
['第一个元素', '改变第二个元素', '改变了1111']
['改变第二个元素', '改变了1111']
[]
NameError: name 'str1' is not defined
删除列表某个值(不知道位置)remove(): listname.remove(values)
- 在某个位置插入新项
list=["H","E","L","L","O"]
print(list)
list.insert(1,"success")
print(list)
---------------------
运行结果
['H', 'E', 'L', 'L', 'O']
['H', 'success', 'E', 'L', 'L', 'O']
- 在末尾添加新项
str1=["第一个元素","第二个元素","第三个元素","第四个元素"]
str1.append("第五个元素")
print(str1)
---------------------
运行结果
['第一个元素', '第二个元素', '第三个元素', '第四个元素', '第五个元素']
- pop():弹出一个元素,并且在原列表中删除(类似于栈中操作)
list.pop():弹出list中最后一个元素并在列表中删除
list.pop(n):弹出list中第n+1个元素并在列表中删除
list=["A","B","C","D","E"]
print(list)
x=list.pop(3) #pop()弹出一个元素,并且在原列表中删除(类似于栈中操作)
print(x)
print(list)
---------------------
运行结果
['A', 'B', 'C', 'D', 'E']
D
['A', 'B', 'C', 'E']
列表的其他方法:
- 学过MATLAB的你应该知道MATLAB的矩阵操作有max() ,min() ,sum()等方法,在Python中同样适用。
str1=[1,5,3]
print(sum(str1))
---------------------
运行结果
9
- 元素反转
str1=[1,5,3]
str1.reverse()
print(str1)
---------------------
运行结果
[3, 5, 1]
- 排序
str1=[1,5,3]
str1.sort(reverse=True) #由大到小
print(str1)
str1.sort(reverse=False) #由小到大
print(str1)
---------------------
运行结果
[5, 3, 1]
[1, 3, 5]
元组tuple
元素表示:列表是用[] , 而元组用()
注意:元组中的元素不允许修改和删除元素,但是允许del (删除整个元组)和元组拼接,操作(如元素的获取)与列表一样。
- 创建元组
tup1=()
print(type(tup1))
tup2=(3) #()相当于一个运算符号,(3)就是3
print(type(tup2))
tup3=(3,) #元组只有一个元素的时候需要加“,”作为元组标记
print(type(tup3))
---------------------
运行结果
<class 'tuple'>
<class 'int'>
<class 'tuple'>
- 列表转换为元组
str1=[1,5,3]
print(str1)
str2=tuple(str1)
print(str2)
---------------------
运行结果
[1, 5, 3]
(1, 5, 3)
- 新增(拼接)
tup1=(1,2,3)
tup2=("nihao","Hello")
tup=tup1+tup2
print(tup)
---------------------
运行结果
(1, 2, 3, 'nihao', 'Hello')
- 删(只能删除整个元组)
tup2=("nihao","Hello")
print(tup2)
del tup2
print(tup2)
---------------------
运行结果
('nihao', 'Hello')
NameError: name 'tup2' is not defined
字典dict
字典是另一种可变容器模型,且可存储任意类型对象。
- 格式
字典的每个键值 (key=>value) 对用冒号 : 分割,每个对之间用逗号 , 分割,整个字典包括在花括号 {} 中。
注意:key必须唯一且不可变的,value不必唯一,且value可以是任意数据类型。 - 字典的访问
kv={"Bob":"boy","Alice":"girl"}
print(kv["Bob"])#直接访问对应的键,没有则报错
print(kv.get("Bob"))#get方法:没有找到对应的键则默认返回None
print(kv.get("Helen","没找到"))#get(str1,str2),没找到返回str2
---------------------
运行结果
boy
boy
没找到
- 字典修改内容
- 修改
kv={"Bob":"boy","Alice":"girl"}
kv["Bob"]="none"
print(kv["Bob"])
---------------------
运行结果
none
- 添加
kv={"Bob":"boy","Alice":"girl"}
kv["Helen"]="girl"
print(kv["Helen"])
---------------------
运行结果
girl
- 删除字典元素
kv={"Bob":"boy","Alice":"girl"}
kv["Helen"]="girl"
del kv["Bob"] # 删除键 "Bob"
print(kv["Bob"])
kv.clear() # 删除字典
del kv # 删除字典
---------------------
运行结果
(结果报错,因为删除了键)
- 其他函数
kv={"Bob":"boy","Alice":"girl"}
print(kv.keys()) #输出所有的键
print(kv.values()) #输出所有的值
print(kv.items()) #输出所有的元素
---------------------
运行结果
dict_keys(['Bob', 'Alice'])
dict_values(['boy', 'girl'])
dict_items([('Bob', 'boy'), ('Alice', 'girl')])
- 遍历操作
kv={"Bob":"boy","Alice":"girl"}
for key in kv.keys():#获取键
print(key)
for value in kv.values():#获取值
print(value)
for key,value in kv.items():
print(key+":"+value)
---------------------
运行结果
Bob
Alice
boy
girl
Bob:boy
Alice:girl
迭代器与生成器
迭代器:一个可以记住遍历的位置的对象
迭代器步骤:
- iter(list_name) ==> 创建基于列表的迭代器
- next(iter_name)==>获取迭代器的下一个元素
打印输出列表:
array=["Hello","World","good",2]
for it in array:
print(it,end=" ")
print()
it=iter(array)
for x in it:
print(x,end=" ")
print()
it_2=iter(array)
for i in range(len(array)):
print(next(it_2),end=" ")
---------------------
运行结果
Hello World good 2
Hello World good 2
Hello World good 2
生成器:一个返回迭代器的函数,只能用于迭代操作。在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值。并在下一次执行 next() 方法时从当前位置继续运行。
例如:随机生成5个[1,50]的随机数并保存在迭代器中
import random
def getrandom():
i=0
while True:
a=random.randint(1,50)
yield a
i+=1
if i==5:
break
random_it=getrandom() #random_it是一个迭代器
for x in random_it:
print(x,end=" ")
---------------------
运行结果
36 22 11 30 24