首页 > 其他分享 >08列表(list)与元组(tuple)

08列表(list)与元组(tuple)

时间:2023-04-12 21:38:18浏览次数:42  
标签:name tuple tup 08 list 元组 print 列表 data

列表(list)与元组(tuple)

列表的格式

>- [数据1,数据2,数据3,数据4,......]
>- 列表可以存储多个数据,数据之间的逗号以英文分割而且可以数据是不同类型的数据,列表是可变数据类型。
>- 空列表 list_data = [] 或者 list_data = list()

  • 列表的创建
# 使用 [ ] 直接创建列表
li = [1,2,3,4,"张三","李四"]
# 使用 list() 函数创建列表
li2 = list('123456789')

列表的常规操作

> 列表的作用是⼀次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、改、查等等

访问列表中的值

  • 根据索引访问列表元素
# 使用索引访问列表元素的格式为:name_list[i]
name_list = ['张三', '李四', '王五','赵六']
print(name_list[0])
print(name_list[1])
print(name_list[2])
  • 根据切片访问列表元素
# 使用切片访问列表元素的格式为:name_list[start : end : step]
name_list = ['张三', '李四', '王五','赵六']
print(name_list[0:4:2])

常用内置函数

方法 描述
append() 在列表最后添加一个数据
pop() 从列表中删除一个数据,默认删除(根据索引)最后一个
sort() 对数据进行排序,默认从小到大排序
reverse() 倒置列表
count() 统计列表中的某一个数据出现的次数
index() 查找索引
extend() 把可迭代对象里的数据一个一个追加到列表中
remove() 删除某个数据
insert() 插入数据
clear() 清空列表中的数据
copy() 复制列表
# append() 在列表的最后添加一个数据
list_data = []
new_data = list_data.append("小明")
print(new_data)
print(list_data)

# pop() 从列表中删除一个数据,默认删除(根据索引)最后一个,相当于pop(-1)
list_data = [1, 2, 3, 4, 5, 6, 7]
data = list_data.pop()
print(list_data)    # [1, 2, 3, 4, 5, 6]
print(data)       # 7
list_data.pop(0)
print(list_data)    # [2, 3, 4, 5, 6]

# sort(key,reverse) 对数据进行排序,默认从小到大排序,即默认是reverse=False
# 其他数据类型也是可以进行排序的,是根据ascll码对应数值大小进行排序
list_data = [2, 3, 9, 6, 5, 2, 1]
list_data.sort()
print(list_data)    # [1, 2, 2, 3, 5, 6, 9]
list_data.sort(reverse=True)
print(list_data)    # [9, 6, 5, 3, 2, 2, 1]

# reverse() 倒置列表
list_data = [1, 3, 2]
list_data.reverse()
print(list_data)    # [2, 3, 1]

# count() 统计列表中的某一个数据出现的次数,这里需注意,不仅判断数值大小,其数据类型也相同才会计数
list_data = [1, 3, 2, 3, 3, 1, 1, '2', '2', '2']
data = list_data.count(1)   # 这里与前面的方法不同,这个会返回一个值,需要变量来接收
print(list_data)    # [1, 3, 2, 3, 3, 1, 1, '2', '2', '2']
print(data)     # 3
print(list_data.count(2))	# 1
print(list_data.count('2'))	# 3

# index() 查找索引,如果该数据有多个返回最前面的一个
list_data = [1, 3, 2, 3, 3, 1, 1, '2', '2', '2']
data = list_data.index(1)   # 这里与前面的方法不同,这个会返回一个值,需要变量来接收
print(list_data)    # [1, 3, 2, 3, 3, 1, 1, '2', '2', '2']
print(data)     # 0

# extend(可迭代对象) 把可迭代对象里的数据一个一个追加到列表中
list_data1 = [1, 3, 2]
list_data2 = [4, 5, 6]
list_data3 = "小明"
print(list_data1 + list_data2)  # [1, 3, 2, 4, 5, 6]
list_data1.extend(list_data2)  # 这里与前面的方法不同,这个会返回一个值,需要变量来接收
print(list_data1)   # [1, 3, 2, 4, 5, 6]
list_data1.extend(list_data3)
print(list_data1)   # [1, 3, 2, 4, 5, 6, '小', '明']

# remove() 删除某个数据,有多个时删除最前面的
list_data = [1, 2, 3, 2]
list_data.remove(2)
print(list_data)    # [1, 3, 2]

# insert(index, object) 插入数据
list_data = [1, 2, 3]
list_data.insert(0, "小明")   # 0代表需要插入的位置的索引,”小明“为所需要插入的数据
print(list_data)        # ['小明', 1, 2, 3]

# clear() 清空列表中的数据
list_data = [1, 2, 3]
list_data.clear()
print(list_data)        # []

# copy() 复制列表  深复制 浅复制
list_data1 = [1, 2, 3]
list_data2 = list_data1
list_data2.pop()
print(list_data2)   # [1, 2]
print(list_data1)   # [1, 2]

list_data1 = [1, 2, 3]
list_data2 = list_data1
list_data2 = list_data1.copy()
list_data2.pop()
print(list_data2)   # [1, 2]
print(list_data1)   # [1, 2, 3]

修改列表元素

>Python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果不指定步长(step 参数),Python 就不要求新赋值的元素个数与原来的元素个数相同;这意味,该操作既可以为列表添加元素,也可以为列表删除元素。

  • 修改单个元素
name_list = ['张三', '李四', '王五','赵六']
name_list[0] = '阿坤'
print(name_list)
  • 修改一组元素
nums = [40, 36, 89, 2, 36, 100, 7]
#修改第 1~4 个元素的值(不包括第4个元素)
nums[1: 4] = [45.25, -77, -52.5]
print(nums)

列表的循环遍历

  • for循环
name_list = ['张三', '李四', '王五','赵六']
for i in name_list:
    print(i)
  • while循环
i = 0
name_list = ['Tom', 'Lily', 'Rose']
while i < len(name_list):
    print(name_list[i])
    i += 1

列表的嵌套

> 所谓列表嵌套指的就是⼀个列表⾥⾯包含了其他的⼦列表

list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(list1[1])		# [4, 5, 6]
print(list1[1][1])	# 5

元组(tuple)

>- (数据1,数据2,数据3,数据4,......)
>- 不可变数据类型,元组不可修改,列表中的元组也不可以修改,但元组中的列表可以修改。
>- 单个数据的元组,需要定义为tuple_data = (1, ),需要在后面加一个逗号
>- 空元组 tuple_data = () 或者 tuple_data = tuple()

元组数据查找

  • 根据下标查找
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1[0])
  • index():查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index⽅法相同。
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.index('aa'))  # 0
  • count():统计某个数据在当前元组出现的次数。
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.count('bb'))  # 1
  • len():统计元组中数据的个数。
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(len(tuple1))  # 4

del删除

  • del,当创建的元组不再使用时,可以通过 del 关键字将其删除
tup = ("python","yyds")
print(tup)
del tup
print(tup)  # NameError: name 'tup' is not defined

元组数据不能修改

# 元组内的直接数据如果修改则⽴即报错
# 但是如果元组⾥⾯有列表,修改列表⾥⾯的数据则是⽀持的。
tup = (1, 2, 3, [4, 5])
print(tup, id(tup))  # (1, 2, 3, [4, 5]) 1455401272328
tup[-1].append(6)
print(tup, id(tup))  # (1, 2, 3, [4, 5, 6]) 1455401272328

可变类型与不可变类型

>可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。
不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。

"""数值"""
a = 1
print(a, id(a))  # 1 1440395456
a = a + 1
print(a, id(a))  # 2 1440395488
"""字符串"""
b = 'a'
print(b, id(b))  # a 2463434018520
b = b.upper()
print(b, id(b))  # A 2463434215920
"""列表"""
li = [1, 2, 3, 4, 5]
print(li, id(li))  # [1, 2, 3, 4, 5] 2464553888584
li.append(6)
print(li, id(li))  # [1, 2, 3, 4, 5, 6] 2464553888584
"""元组"""
tup = (1, 2, 3, [4, 5])
print(tup, id(tup))  # (1, 2, 3, [4, 5]) 2464553829384
tup[-1].append(6)
print(tup, id(tup))  # (1, 2, 3, [4, 5, 6]) 2464553829384

标签:name,tuple,tup,08,list,元组,print,列表,data
From: https://www.cnblogs.com/daguo118/p/17311336.html

相关文章

  • Go微服务框架go-kratos实战学习08:负载均衡基本使用
    微服务框架go-kratos中负载均衡使用一、介绍在前面这篇文章负载均衡和它的算法介绍,讲了什么是负载均衡以及作用、算法介绍。go-kratos的负载均衡主要接口是Selector,它是一个可插拔的设计。因为它设计的都是接口,只要实现了接口就实现了负载均衡。go-kratos在目录下提供了......
  • PAT Basic 1089. 狼人杀-简单版
    PATBasic1089.狼人杀-简单版1.题目描述:以下文字摘自《灵机一动·好玩的数学》:“狼人杀”游戏分为狼人、好人两大阵营。在一局“狼人杀”游戏中,1号玩家说:“2号是狼人”,2号玩家说:“3号是好人”,3号玩家说:“4号是狼人”,4号玩家说:“5号是好人”,5号玩家说:“4号是好人”......
  • UVa 408 Uniform Generator (最大公约数&证明)
    408-UniformGeneratorTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=100&page=show_problem&problem=349Computersimulationsoftenrequirerandomnumbers.Onewaytogeneratepseudo-r......
  • PAT Basic 1088. 三人行
    PATBasic1088.三人行1.题目描述:子曰:“三人行,必有我师焉。择其善者而从之,其不善者而改之。”本题给定甲、乙、丙三个人的能力值关系为:甲的能力值确定是2位正整数;把甲的能力值的2个数字调换位置就是乙的能力值;甲乙两人能力差是丙的能力值的X倍;乙的能力值是丙的Y倍。......
  • 108. 将有序数组转换为二叉搜索树
    给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过1」的二叉树。classSolution{public:TreeNode*sortedArrayToBST(vector<int>&nums){......
  • 【408 操作系统】第一章 操作系统概述
    第一章操作系统概述重温408四件套的关系1.1.1操作系统的概念、功能......
  • PAT Basic 1087. 有多少不同的值
    PATBasic1087.有多少不同的值1.题目描述:当自然数 \(n\) 依次取\(1、2、3、……、N\) 时,算式 \(⌊n/2⌋+⌊n/3⌋+⌊n/5⌋\) 有多少个不同的值?(注:\(⌊x⌋\) 为取整函数,表示不超过 \(x\) 的最大自然数,即 \(x\) 的整数部分。)2.输入格式:输入给出一个正整数 \(N\)(\(......
  • PAT Basic 1086. 就不告诉你
    PATBasic1086.就不告诉你1.题目描述:做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三。”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积。2.输入格式:输入在第一行给出两个不超过1000的正整数A和B,其间以空格分隔。......
  • PAT Basic 1085. PAT单位排行
    PATBasic1085.PAT单位排行1.题目描述:每次PAT考试结束后,考试中心都会发布一个考生单位排行榜。本题就请你实现这个功能。2.输入格式:输入第一行给出一个正整数N(\(≤10^5\)),即考生人数。随后N行,每行按下列格式给出一个考生的信息:准考证号得分学校其中准考证号是由......
  • w2 P1008 [NOIP1998 普及组] 三连击
      主要思路:构造一个judge函数,判断是否1-9都出现了。由于三位数范围为123-987,但因为要求三个数字比例为1:2:3,所以在遍历时的范围是123-987/3。遍历范围内的每一个整数x,并判断2x,3x是否满足judge函数,满足则输出这三个数,否则继续遍历。代码如下:#include<iostream>usingnamespac......