Python列表和元组1

1.序列

  • 序列存放多个值连续内存空间,按照一定顺序排列,每一个值(元素)分配一个数字,称为索引或者位置,通过该索引获取相对应的值。
  • 在Python中,序列结构主要有列表,元组,集合,字典,和字符串构成
  • 序列中所有的操作基础通用操作,同样也适合列表,元组等

1.1 索引

  • 序列中每个元素有个编号,称为索引,索引从0开始递增的
  • 若采用0为索引则从左向右计数0,1,2…,若采用-1为索引则从右向左计数-1,-2,-3…
#定义一个列表,通过索引获取元素的的值
Res = [1,2,3,4]
print(Res[0])     #输出1
print(Res[-1])    #输出4

1.2 序列相加

  • Python支持两种类型序列相加操作,使用(+)运算符对两个序列进行连接。
  • 相同类型序列指,同列表,元组或集合等,序列中的元素类型可以不同
#序列相加,两序列合并一个,注意前后顺序.
List1 = [1,2,3,"i"]
List2 = [4,5,6]
print(List1 + List2)  #输出[1, 2, 3, 'i', 4, 5, 6]

1.3 乘法

  • Python中使用(*)运算符,实现序列重复次数产生一个新的序列
#序列 * 3,序列元素内容重复三次.产生新的序列
List1 = [1,2,3]
print(List1 * 3) #输出[1, 2, 3, 1, 2, 3, 1, 2, 3]

1.4 检查某个元素是否为序列的成员

  • Python可以使用in关键字,检查某个元素是否存在序列中
#in关键字,得到的结果是布尔值,元素存在序列中True,不存在Flase
List1 = [1,2,3]
print(1 in List1)  #输出True
print(5 in List1)  #输出False

1.5 计算序列的长度,最大值和最小值

函数 说明
len() 计算序列的元素长度
max() 分会序列中的最大元素
min() 返回序列中最小元素
sum() 计算元素和
list() 转换为列表
sorted() 对元素进行排序
reversed() 反向序列中的元素
# 计算序列长度len()
List = [0,1,2]
print(len((List))) #输出3

# 计算序列中最大元素max()
print(max(List))   #输出2

# 计算序列中最小元素min()
print(min(List))   #输出0

2.列表

  • 列表中元素放在一对括号"[ ]"中,两个相邻元素使用逗号分隔
  • 可以将整数,实数,字符出,列表,元组等任何类型的内容放到列表中,且同一列表中,元素的类型可以不同
  • 虽然不同类型数据可以放在同一列表,为了提高程序可读性,建议一个列表只存放一种类型数据

2.1 列表创建和删除

  • 创建列表:"= "使用赋值运算符创建
# 创建列表
list = [] #创建空列表
print(type(list)) #输出<class 'list'>
  • 使用list()函数创建列表
# 语法:range(start,end,step) start,end,step都必须是整数
# start 默认值为0,step默认值为1
# range包头不包尾(包括开始的数,不包括结束的数)
List1 = list(range(0,100,2))
print(List1)                 #包头不包围所以不包含100
print(type(List1))           #输出<class 'list'>
  • 对于已经创建列表,不使用时,使用del语句删除
  • del语句在实际开发,不常用。因为Python自带的垃圾回收机制会自动销毁不用的列表,即使不手动删除,Python也会自动将其回收
# del删除列表
List1 = list(range(0,100,2))
del List1

2.2 访问列表元素

  • 通过列表索引获取指定元素
List1 = [1,2,3]
print(List1)     #输出列表全部元素
print(List1[0])  #输出1

2.3 遍历列表

  • 使用for循环实现,只能输出元素的值
# 语法 for item in listname:
           #输出item
# item保存遍历元素值,for循环会一个一个对listname列表元素遍历,元素值保存到tiem
# 可以看到for循环i += 1的值变成2 3 4 但是不会修改原列表数据 原列表中的数据只能通过下标(索引)方法修改
List = [1,2,3]
for i in List:
    i += 1
    print(i,end=" ")     #输出2 3 4
print(List)              #输出[1, 2, 3]
  • 使用for循环和enumerate()函数实现
  • 使用for循环和enumerate()函数可以实现同时输出索引值和元素内容功能
# 语法 for index,item in enumerate(listname):
          # 输出index和item
# index:保存元素索引
# item:保存元素的值
# listname:列表名称
List1 = ["四月","是你的","谎言"]
for index,itme in enumerate(List1):
    print(index + 1,itme,end=" ")       #index索引+1,因为索引0开始,+1为了从1开始显示

2.4 添加元素

  • append()函数:在列表末尾增加元素
# append() 在列表末尾添加元素,一次只能添加一个
list = [1,2,3]
list.append(4)
print(list)       #输出[1, 2, 3, 4]
  • extend() 在末尾增加多个元素,参数必须是可迭代元素(可以使用for-in遍历的)
# extend(V) 在列表末尾添多个元素,V是需要添加列表
list = [1,2,3]
list.extend([4,5,6])
print(list)             #[1, 2, 3, 4, 5, 6]
  • insert(i,obj) 在指定i位置插入新元素,原来的元素会后移不会覆盖
# insert(i,obj) i插入位置的下标,obj插入的元素
# 如果下标大于列表最大下表,则在末尾插入
list = [1,2,3]
list.insert(0,4)
print(list)             #[4, 1, 2, 3]

2.5 删除元素

  • pop(i) 删除下标为i的元素,i必须是合法下标
# list1.pop()  # 不带参数,删除最后一个
# list1.pop(0) # 删除第一个
list = [1,2,3]
list.pop(0)             #删除第一个元素
print(list)             #输出[2, 3]
list.pop()              #删除最后一个元素
print(list)             #输出[2]
  • remove(x) 删除列表中第一个值等于x的元素,删除的时候从向右找到第一个等于x的元素并且删除,如果列表中没有该值会引起错误:ValueError
#判断1是否在列表中,在就删除,不在就不执行不会报错
if 1 in list:
    list.remove(1)
    print(list)       #输出[2, 3, 4, 1],因为remove()从左向右删除第一个,执行一次,所以结尾1不会删除可以写while循环删除
  • clear() 清空列表
# clear()清空列表
list = [1,2,3,4,1]
list.clear()
print(list)        #输出[]

2.6 修改元素

  • 通过索引获取该元素,然后重新赋值
# 赋值修改
list = [1,2,3]
list[0] = 0       #获取索引0,值为1,赋值0
print(list)       #输出[0, 2, 3]

2.7 获取指定元素出现个数

  • count()函数
list = [1,2,3,1]
print(list.count(1))   #输出2两次,如果不存在输出0

2.8 获取指定元素首次出现的下标

  • index(x,start,end) 如果有值等于x的元素,则返回其下标,否则报错
# index从左向右查询,碰到第一个等于x的结束
list = [1,2,1]
if 1 in list:                  #需要提前判断元素是否在列表中,当查询的元素不在会报错
    print(list.index(1,1,3))   #指定范围查询包头包尾,输出下标2
    print(list.index(1))       #输出下标0

2.9 统计数值列表的元素和

  • sum(listnames[,start]) :[,start]可选参数表示结果从哪个数开始,将计算的结果加上start指定的数
list = [1,2,1]
print(sum(list))      #输出4
print((sum(list,2)))  #输出6,列表总数4 + 2 = 6

2.10 列表反转

# reverse() 反向输出列表元素
list = [1,2,3]
V = reversed(list)
for i in V:
    print(i,end=" ") #输出3 2 1 

2.11 sort()函数对列表排序

  • 对字符串列表排序时,先对大写字母进行排序,在对小写字母进行排序
  • 对字符串列表排序时,如果想不区分大小写时,指定key参数,例如sort(key=str.lower)
  • 使用sort()排序源列表发生改变
# 语法 listname.sort(key=None,reverse=False)
#      reverse指定Ture,表示降序排列,为False,表示升序排列,默认升序
list1 = [2,5,4,1,3]
list1.sort()
print(list1)           #默认False升序 输出[1, 2, 3, 4, 5]
list1.sort(reverse=True)
print(list1)           #reverse=True 输出[5, 4, 3, 2, 1]

2.12 sorted()函数对列表排序

  • Python内置函数sorted()对列表排序后,原列表元素顺序不变
# 语法 sorted(key=None,reverse=False)
#      reverse指定Ture,表示降序排列,为False,表示升序排列,默认升序
list1 = [2,5,4,1,3]
V = sorted(list1)
print(V)                    #输出[1, 2, 3, 4, 5]
print(list1)                #输出[2, 5, 4, 1, 3]

2.13 切片运算

  • 切片运算 获取子列表
# 列表名[start:end:step=1]
# start默认值是0;end默认值列表长度
# step如果是正数,表示从左向右切,负数表示从右向左切;默认值是1
# start必须小于end才有子列表,否则切出空列表
# 切片包头不包尾(包括开始下标,不包括结束下标)
list1 = [10, 20, 30, 40, 50, 60, 70, 80]
# 从左向右切
print(list1[2:5]) # [30, 40, 50]
print(list1[::3]) # [10, 40, 70]
print(list1[:])   # [10, 20, 30, 40, 50, 60, 70, 80]

#从右往左切
print(list1[:-4:-1])  # [80, 70, 60]
print(list1[-3:2:-1]) # [60, 50, 40]
print(list1[2:-3])  # [30, 40, 50]

2.14 列表推导式

  • 生成指定范围数值列表
  • list = [Expression for var in range]
import random                         # 导入random标准库
randomumber = [random.randint(10,100) for i in range(10)]
print("生成的随机数为:",randomumber)  # 输出:生成的随机数为: [10, 19, 36, 27, 90, 88, 76, 38, 58, 81]
  • 根据列表生成指定需求的列表
  • New_list = [Expression for var in list]
Num = [10,20,30]
NewNum = [int((x * 0.5)) for x in Num]
print(NewNum)      # 输出:[5, 10, 15]
  • 从列表中选择符合条件的元素组成新列表
  • New_list = [Expression for var in list if condition]
Num = [1,2,3,4,5,6]
NewNum = [x for x in Num if x > 3]
print(NewNum)    # 输出:[4, 5, 6]

3.作业

3.1不使用列表的index函数,自己写程序查找指定元素

  • 要查找的元素从键盘输入
  • 默认从左向右查找,直到第一个元素就停止
Num = input("请输入要查询元素:")
try:
    Num = eval(Num)
except:
    Num = Num
list = [1,2,3,1.1,"四月"]
if Num in list:
   for index,item in enumerate(list):
       if Num == item:
           print("元素下标:",index)
           print("查到元素:",item)
else:
    print("对不起你查找的元素不在")

3.2 打印图形(使用循环)

j = 1
for i in range(1,8,2):
    print(" " *(4 - j),end=" " )
    print("*"*i)
    j += 1
#输出如下    
'''
    *
   ***
  *****
 *******
'''

3.3 填空题

# 已知a = [1,2,3],执⾏行行a.insert(1,4)后,a = [1, 4, 2, 3] ;
# 执⾏行行a.append(10)后,a = [1,2,3,10];
# 执⾏行行a.extend([20,30])后,a = [1,2,3,20,30]
发布了10 篇原创文章 · 获赞 1 · 访问量 846

猜你喜欢

转载自blog.csdn.net/Sky_Mazarine/article/details/103968069