首页 > 编程语言 >什么!你还在学列表和元组?!这一篇文章就够了!之Python基础篇-列表与元组

什么!你还在学列表和元组?!这一篇文章就够了!之Python基础篇-列表与元组

时间:2024-06-02 12:31:52浏览次数:26  
标签:20 Python list 列表 ls6 print 元组

列表定义

  • 列表的格式:列表名=[元素1 , 元素2 , 元素3 , ... ...]
  • 空列表的定义:my_list = [](常用)    或    my_list = list()
  • 列表中的元素不需要具有相同的类型。
#定义列表list1,且列表中的元素不具有相同的类型
>>> list1=['xiaoming','m',201,54,'13458714']
>>> type(list1)
<class 'list'>
 
#创建空列表my_list
#方法一(常用)
>>> my_list=[]
>>> type(my_list)
<class 'list'>
#方法二
>>> my_list=list()
>>> type(my_list)
<class 'list'>
  • 补充:列表内存地址占用
list = []
print(id(list))  #通过id方法查看列表地址  此时输出 1352129433856
#我们再定义一个列表与上面列表名称相同
list = []
print(id(list))  # 此时输出结果为 1352129435712

#以上可以看出 当列表为空,再次定义相同列表,列表并不会覆盖,而是占用两个地址

#------------------------------------------------------
list = []
print(id(list))  # 此时输出  2637067112704


list = [2,3]  #对我们的列表进行复制 
print(id(list))  # 此时输出 2637067114560
#那如果我们替换列表中的元素呢?
list[0] = 1 #将列表中的 2 改为 1
print(id(list)) # 此时输出  2637067114560  通俗来讲就是你的列表栈地址未变,改变的是栈内的堆,因此列表的内存地址不会改变


#因此可以看出更改列表元素并不会更改列表地址

列表索引与遍历

list1=['xiaoming','m',20,50,'123456',20]

#下标从零开始依次往后推移


#既然有了下标索引,我们就可以进行遍历了

# 遍历数组所有元素
for i in list1:
    print(i,end=' ')  # 输出结果为 xiaoming m 20 50 123456 20 

#也可以根据下表进行遍历
length = len(list1)  #获取列表长度
for i in range(lenth)
    print (list1[i],end=' ') # 输出结果为 xiaoming m 20 50 123456 20 

列表常用操作方法

3.列表增删改查
ls6 = [11, 22]
# 添加数据
ls6.append(33)  # 末尾追加
print(ls6)  # [11, 22, 33]
# 指定索引插入数据
ls6.insert(1, 'hello')
print(ls6)  # [11, 'hello', 22, 33]
ls6.extend(['a', 'b'])  # 合并另外一个列表
print(ls6)  # [11, 'hello', 22, 33, 'a', 'b']

# 查询数据
print(ls6[2])  # 根据索引查询数据
print(ls6.index('hello'))  # 1   根据数据查询索引
print(ls6.index(22, 1, 5))  # 2  指定区间内根据数据查询索引
ls6.append(22)
print(ls6)  # [11, 'hello', 22, 33, 'a', 'b', 22]
print(ls6.count(22))  # 2, 统计数据在列表中的个数

# 修改数据
ls6[3]=True   # 根据索引修改
print(ls6)  # [11, 'hello', 22, True, 'a', 'b', 22]

# 删除数据
del ls6[2]  # 根据索引删除数据
print(ls6)  # [11, 'hello', True, 'a', 'b', 22]
ls6.remove(True)  # 删除指定数据
print(ls6)   # [11, 'hello', 'a', 'b', 22]
ls6.pop()  # 末尾删除
print(ls6)  # [11, 'hello', 'a', 'b']
ls6.pop(2)  # 根据索引删除数据
print(ls6)   # [11, 'hello', 'b']
# ls6.clear()   # 清空数据
# print(ls6)  # []
# del ls6  # 删除变量
# print(ls6)

# 4.其他方法
ls7=ls6.copy()  # 拷贝一个新的列表
print(ls7) # [11, 'hello', 'b']
ls7.reverse() # 列表翻转
print(ls7)  # ['b', 'hello', 11]
ls8=[10,45,20,32,65]
ls8.sort(reverse=False) # 默认 reverse是False 升序
print(ls8)  # [10, 20, 32, 45, 65]
ls8.sort(reverse=True)
print(ls8)  # [65, 45, 32, 20, 10]  降序\

5.列表的切片

"""
  切片:ls[start:stop:step]
  start:开始切片的位置,默认值0,可省略不写
  stop:结束切片的位置,默认值是列表长度,可省略不写
  step:步长,默认值为1,可以省略不写
"""
# 切片获取数据
print(ls[1:5])  # ['2', '3', '4', '5']
print(ls[:3])  # ['1', '2', '3']  获取前3个元素
print(ls[5:])  # ['6', '7', '8']  获取下标5以后得数据

print(ls[1:5:2])  # ['2', '4']  下标跳2个
print(ls[5:1:-1])  # ['6', '5', '4', '3']
# 切片翻转
print(ls[::-1])  # ['8', '7', '6', '5', '4', '3', '2', '1']
s = 'hello'
print(s[1:4])  # ell

# ['1', '2', '3', '4', '5', '6', '7', '8']
# 切片替换
# ls[2:4]=['a','b','c']   # 步长为1,可将截取的内容替换
# print(ls)  # ['1', '2', 'a', 'b', 'c', '5', '6', '7', '8']
print(ls[1:6:2])  # ['2', '4', '6']
ls[1:6:2] = ['a', 'b', 'c']  # 步长不为1,只能同位置替换
print(ls)  # ['1', 'a', '3', 'b', '5', 'c', '7', '8']

# 列表乘法
print(['a', 'b'] * 3)  # ['a', 'b', 'a', 'b', 'a', 'b']
# 列表加法
print(['a', 'b'] + [11, 22])  # ['a', 'b', 11, 22]
# 列表成员运算
print('a' in ['a', 'b'])  # True
print('a' not in ['a', 'b'])  # False


#通过一个简单的小案例来应用切片操作
month = 3
day = 0
if month in [1, 3, 5, 7, 8, 10, 12]:
    day = 31
elif month in [4, 6, 9, 11]:
    day = 30
elif month == 2:
    day = 29
print(day)  # 31

元组定义

  • 元组名 = ( 元素1 , 元素2 , ... ... )

#当定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来
>>> tup1 = ('Edge', 'Runoob', 2024, 2000)  


>>> tup1=()
>>> type(tup1)   #创建空元组
<class 'tuple'>
 
>>> tup2=(50)
>>> type(tup2)   #不加逗号,类型为整型
<class 'int'>
 
>>> tup3=(50,)   #加上逗号,类型为元组
>>> type(tup3)
<class 'tuple'>


#在Python中,很多人认为元组创建需要使用(),其实不然,真正决定元组的形式是逗号。
>>> tup='','b',1,2
>>> type(tup)
<class 'tuple'>

元组遍历

# 5.遍历
list9 = (10, 'a', 20, 'b', 5)

for item in list9:
    print(item, end='\t')
print()

for i in range(len(list9)):
    print(list9[i], end='\t')
print()

for key, val in enumerate(list9):
    print(key, val)

元组常用操作方法

"""
  列表,有序(索引)可重复,可更新
  元组,有序(索引)可重复,不可更新
"""
# 1.创建
tuple1 = (10, 20, 'a', True)
tuple2 = ()
tuple3 = tuple()
tuple4 = (10,)
print(tuple1)
print(tuple4)
# 2.类型转换
tuple5 = tuple('hello')  # str->tuple
str5 = str(tuple5)  # tuple->str
tuple6 = tuple(['a', 10, 20])  # list->tuple
list6 = list(tuple6)  # list->tuple
print(tuple5)
print(str5, type(str5))
print(tuple6)  # ('a', 10, 20)
print(list6)  # ['a', 10, 20]
# 3.增删改(不可更新)   查
list7 = (10, 5, 20, 5)
# 查询
print(list7[1])  # 根据下标获取元素
print(list7.index(10))  # 根据元素获取下标
print(list7.count(5))  # 查询元素在元组中的个数
# 4.通用操作
# 内置函数
print(max(list7))
print(min(list7))
print(sum(list7))
print(len(list7))

元组与列表切片

# 切片
list8 = (10, 'a', 20, 'b', 5)
print(list8[1:3])
# 加法和乘法
print((1, 2) + ('a', 'b'))  # (1, 2, 'a', 'b')
print(('a', 'b') * 2)  # ('a', 'b', 'a', 'b')
# 成员运算
print(1 in (1, 2))  # True

列表与元组差异

  • 列表,有序(索引)可重复,可更新
  • 元组,有序(索引)可重复,不可更新
  • 你可能会有疑问为什么列表包含方法包含元组方法,相对于元组来说列表更好使用,为什么还有元组呢?
  • 对于计算机来说,调用由于元组方法少于列表,调用元组运算量会少于列表,因此这就是元组方法没有列表多还存在的意义

标签:20,Python,list,列表,ls6,print,元组
From: https://blog.csdn.net/Bearcaocao/article/details/139331177

相关文章

  • Anaconda安装Python的seaborn库
      本文介绍在Anaconda的环境中,安装Python语言中,常用的一个绘图库seaborn模块的方法。  seaborn模块是基于Matplotlib的数据可视化库,它提供了一种更简单、更漂亮的界面来创建各种统计图形。seaborn模块主要用于数据探索、数据分析和数据可视化,使得我们在Python中创建各种统计......
  • 使用Python连接到SQLite3数据库进行数据更新和删除
    SQLite3是一种轻量级的嵌入式关系型数据库管理系统,广泛应用于移动应用、嵌入式设备以及小型Web应用等场景。Python内置了对SQLite3数据库的支持,通过sqlite3模块,可以方便地连接、操作SQLite3数据库。在本文中,我们将学习如何使用Python连接到SQLite3数据库,并进行数据更新和删......
  • 【python008】excel表格转markdown文档表格
    1.写文过程中,针对梳理出来的execl知识表格矩阵,想要处理成markdown表格,便于研发等过程中的复用,所以参考了类似需求的代码。后续可以扩展开发功能,增加多种文件格式转换工具(有时间再慢慢补充)。2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来!3.欢迎点赞、关注、批评、指正......
  • Python实现ARW到JPG图片转换
    input_path 替换为ARW所在目录output_path替换为JPG保存位置点击查看代码importosimportsubprocessimportrawpyimportimageioinput_path=r'C:\Users\chen\Pictures\ARW'output_path=rf'C:\Users\chen\Pictures\JPG'arw_files=[fforfinos.lis......
  • Pyinstaller打包exe的反编译——LitCTF 2024(公开赛道)ezpython!!!!!
    这个工具折磨了我很久,搭配题目记录一下...题目Die打包工具:PyInstaller建议下载GitHub的:GitHub-extremecoders-re/pyinstxtractor:PyInstallerExtractor单独的一个 pyInstaller.py 会很麻烦步骤:将exe拖到pyinstxtractor-master文件夹下面,打开cmdpythonpyinstx......
  • 力扣 2642. 设计可以求最短路径的图类 python AC
    朴素dijkstraclassGraph:def__init__(self,n,edges):self.n=nself.INF=float('inf')self.matrix=[[self.INF]*nfor_inrange(n)]foru,v,winedges:self.matrix[u][v]=wdefaddEdg......
  • 【Python】解决Python报错:AttributeError: ‘str‘ object has no attribute ‘xxx‘
    ......
  • Python 潮流周刊#53:我辈楷模,一个约见诺奖得主,一个成为核心开发者
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。本期周刊分享了12篇文章,12个开源项目,赠书5本《程序是怎样跑起来的(第3版)......
  • 【Python内功心法】:深挖内置函数,释放语言潜能
    文章目录......
  • Python基础入门(1)
                     第一章——打印函数print    大家好,我们今天来学习Python(入门1)。    首先,学过编程的朋友都知道,学一种编程语言,第一件事就是让它说出"Hello World"。    Python中print就是打印的意思,所以......