intellij idea安装 定义键盘快捷键 接口测试 全局重载运算符 Mixin rest encryption Fries 百度seo关键词 录音棚设备一套多少钱 mysql重新初始化 excel动态图表制作 java多行注释 mysql错误代码1064 oracle可视化工具 kubernetes官网 python高级教程 python用什么ide python函数内定义函数 python中集合 java实战 java表达式 java设置 java程序 java集合类 java日期格式化 nginx安装教程 linux云服务器 python教程下载 java电子书下载 microkms 苹果剪辑 微信昵称找人的软件 c4dr19 微信公众号点餐系统 xmind画流程图 oracle表分区 lrc软件 文件分割 图片转pdf软件
当前位置: 首页 > 学习教程  > python

天池龙珠训练营Python_Task2: 数据结构_(1)列表

2021/2/8 12:25:27 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

简介 介绍Pthon中的基本数据结构及其数据存储及使用。 本部分包括以下内容: 列表元组字符串字典集合序列 1.列表 列表是有顺序的集合,没有固定的大小,能够保存任意数任意类型的Python对象。语法为[元素1,元素2,……

简介

介绍Pthon中的基本数据结构及其数据存储及使用。

本部分包括以下内容:

  1. 列表
  2. 元组
  3. 字符串
  4. 字典
  5. 集合
  6. 序列

1.列表

列表是有顺序的集合,没有固定的大小,能够保存任意数任意类型的Python对象。语法为[元素1,元素2,…, 元素n]
[ ]:中括号把所有元素括起来
,: 逗号用于元素之间的间隔

2.列表的创建

  • 例1:创建普通列表
x=['Mondy','Tuesday','wedenesday','Thusday','Thursday','Friday']
print(x,type(x))

x=[2,3,4,5,6,7]
print(x,type(x))
  • 例2:利用range()函数来数列列表
x=list(range(10)) #得到0-9,10个整数
print(x,type(x))

x = list(range(1, 11, 2)) #0-9中的奇数
print(x,type(x))

x = list(range(10, 1, -2)) #10-1中的偶数-倒序
print(x, type(x))
# [10, 8, 6, 4, 2] <class 'list'>
  • 例3:推导式创建列表列表
x=[0]*5  #扩展为5个0元素的列表
print(x,type(x))

x = [0 for i in range(5)]  #扩展为5个0元素的列表
print(x, type(x))

x = [i for i in range(10)] #用推导式代替list函数转换range() 的结果
print(x, type(x))

x = [i for i in range(1, 10, 2)]# 改变range 产生数列的步长
print(x, type(x))

x = [i for i in range(10, 1, -2)] #range 采用倒序产生数列
print(x, type(x))
x = [i ** 2 for i in range(1, 10)] #range 产生的数列作为平方项
print(x, type(x))

x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]#0-100之间是3的倍数,但不是2的倍数
print(x, type(x))

[0, 0, 0, 0, 0] <class ‘list’>
[0, 0, 0, 0, 0] <class ‘list’>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] <class ‘list’>
[1, 3, 5, 7, 9] <class ‘list’>
[10, 8, 6, 4, 2] <class ‘list’>
[1, 4, 9, 16, 25, 36, 49, 64, 81] <class ‘list’>
[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99] <class ‘list’>

列表中可以存储对象, 也可以是指向对象的指针。
[1,3,4],实际有3个指针和3个整数对象
x=[a]*4 , 是创建4个指list对象的引用。

x = ['c'] * 3  #创建有3个'c'的列表
print(x,type(x))
a = [x] * 4   #创建4个指向x列表对象的元素
print(a, type(a))

[‘c’, ‘c’, ‘c’] <class ‘list’>
[[‘c’, ‘c’, ‘c’], [‘c’, ‘c’, ‘c’], [‘c’, ‘c’, ‘c’], [‘c’, ‘c’, ‘c’]] <class ‘list’>

  • 例4:混合列表创建
    混合列表,即列表中元素有多种数据类型
mix=[1,'table','4.56,['a','c','b']]  #列表mix数据有4种类型
print(mix,type(mix)

3.向列表中添加元素

list.append(obj)在列表末尾添加新的对象,只接受一个参数,参数可以是任何数类型,被添加的元素在list中保持着原结构类型。

  • 例1:加入一个数据元素
x=[1,2,3,4]
x.append(5)
print(x)

[1, 2, 3, 4, 5] <class ‘list’>

  • 例2:加入一个列表元素
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.append(['Thursday', 'Sunday'])
print(x,len(x)) 

[‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, [‘Thursday’, ‘Sunday’]] 6
除了lilst.append方法外,还有list.extend(seq)方法,可以在列表末尾一次追加另一个序列中的多个值(用新列扩展原来的列表)

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.extend(['Thursday', 'Sunday'])
print(x)  

[‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, ‘Thursday’, ‘Sunday’]
可以用来对两个列表的合成。
append:将原对象添加到列表末尾
extend:将原对象的拆开为元素添加到列表末尾。

4.删除列表中元素

例1:使用list.remove(obj)方法移除列表中匹配的元素。

x=['Ali','Tencent','Bidu']
y=x.remove('Tencent')     #弹出’Tencent‘

例2:按指定的索引值弹出列表中对应的元素。

x=['Ali','Tencent','Bidu']
y=x.pop(0)   #  默认弹出第一项
print(y)         #  Baidu
print(x)         #  ['Ali', 'Tencet']

x=['Ali','Tencet','Bidu']
y=x.pop()     # 默认弹出最后一项
print(y)         #  Baidu
print(x)         #  ['Ali', 'Tencent']

x=['Ali','Tencent','Baidu']
y=x.pop(-1)  # 弹出最后一项
print(y)        # Baidu   被弹出项
print(x)         #['Ali', 'Tencet'] --剩余列表项

x=['Ali','Tencent','Bidu']
y=x.pop(-2)
print(y)  # Tencet 被弹出项
print(x)  # ['Ali', 'Bidu']  --剩余列表项

例3:使用del语句删除多个元素。

x=['Ali','Tencent','Bidu']
del x[0:3]  # 一次删除 x[0]  x[1]  x[2] 三个元素
print(x)   # []

索引值规律:从左向右依次为0,1,2…从右向左[…-3,-2,-1]

5.获取列表中元素

例1:通过索引值获取列表中的单个元素

x=['Ali','Tencent','Bidu',['Uited States',  'Google']]
t1=x[0]   # 得到第一个元素'Ali'   
print(t1)
t2=x[-1]  # 得到最后一个元素['United States']
print(t2)

例2:使用切片的方式一次获取多个元素

x=['Ali','Tencent','Bidu',['Uited States',  'Google']]
print( x[:] ) #获取列表中的所有元素

t1=x[1:]   # 获取指标从1开始往后列表所有的元素
print(t1)   # ['Tencent', 'Bidu', ['Uited States', 'Google']]

t2=x[-2:]  # 获取-2指标开始往前所有的元素
print(t2)   # ['Ali', 'Tencent']

t2=x[1:3 ]  # 获取指标从1开始到3之前的元素(不包括指标3对应的元素)
print(t2)   # ['Ali', 'Tencent']

x=['Ali','Tencent','Bidu',['Uited States',  'Google']]
t2=x[-3:-1]  #指标-3到-1对应的元素(不包括指标-1对应的元素)。注这里指标要升序,不能写成[-1:-3]
print(t2)      # ['Tencent', 'Bidu']   

例3:浅拷贝与深拷贝

list1 = [123, 456, 789, 213]
list2 = list1        # list2与list1 指向同一个列表对象
list3 = list1[:]     # list3与list1指向不同的列表对象
print(id(list1),id(list2),id(list3)) #  3101950469896 3101950469896 3101967351752

# list1,与list2的对象ID相同,而 list3 与 list1所指列表对象不同,只是列表对象的值相同。
print(list2)  # [123, 456, 789, 213]  
print(list3)  # [123, 456, 789, 213]

# 对list1列表元素进行排序,那么list2与其所指对象相同,输出也被排序。list3与lis1所指对象不同,未排序。
list1.sort()  
print(list2)  # [123, 213, 456, 789]   # 排序
print(list3)  # [123, 456, 789, 213]   # 未排序

6.列表常用操作符

  • 等号==: 两个列表完全相同返回True,否则为False
  • 连接符+:首尾连接两个列表
  • 重复运算符*:重复复制连接
  • 成员运算符in,not in :
list1=['TianChi','Python']
list2=['TianChi','Java']

print(list1==list2) # False
print(list1+list2) #['TianChi', 'Python', 'TianChi', 'Java']
print(list1*3)#['TianChi', 'Python', 'TianChi', 'Python', 'TianChi', 'Python']

7.列表的其他方法

  • list.count(obj):统计某元素在列表中出现的次数。
list1=['TianChi','Python','TianChi','Java']
print(list1.count('TianChi'))  # 2
  • list.index(x[,start[,end]]) :从列表中找出某个值第一个匹配项的索引位置
list1=['TianChi','Python','TianChi','Java']
print(list1.index('TianChi'))  # 0
  • list.reverse() 对列表中元素进行反向排序,无返回值
    list.sort(key=None, reverse=False) 对原列表进行排序。
list1=['TianChi','Python','TianChi','Java']
list1.reverse()  # list1列表进行倒序
print(list1)  #['Java', 'TianChi', 'Python', 'TianChi']
  • list.sort(key=None, reverse=False) 对原列表进行排序,无返回值。
# 获取列表的第二个元素
def takeSecond(elem):
    return elem[1]

x = [(2, 2), (3, 4), (4, 1), (1, 3)]
x.sort(key=takeSecond)
print(x)  # [(4, 1), (2, 2), (1, 3), (3, 4)]   ;按第2个元素排序 

x.sort(key=lambda a: a[0])
print(x)
# [(1, 3), (2, 2), (3, 4), (4, 1)]  #按第1 个元素排序 

注:Python 的小练习题
http://www.practicepython.org/solution/2014/12/25/23-file-overlap-solutions.html
Python的在线运行库
https://repl.it/languages/python3


本文链接: http://www.dtmao.cc/news_show_2000336.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?