list列表

  • 一组由有序数据组成的序列

    • 数据有先后顺序
    • 数据可以不是一类数据
  • list的创建
    • 直接创建,用中括号创建,内容直接用英文逗号隔开
    • 使用list创建
    • 列表包含单个字符串的时候是一个特例

# 直接赋值创建列表
>>> L1 = [1,2,3,4,5]
# list内的数据可以不是一个类型
>>> L2 = [1,2,3,"China","小明"] # 创建列表的第二种方式
>>> L3 = list()
>>> print(L1)
>>> print(L2)
>>> print(L3) #L3是一个空的列表
>>> print(type(L3))#内置函数 type() 显示变量的类型b 输出:
[1, 2, 3, 4, 5]
[1, 2, 3, 'China', '小明']
[]
<class 'list'> --------------------------------------------------------------------------------------------------- # list创建的特例
>>> s = "Ha ha" #想创建就包含s一个字符串的列表
>>> L1 = list(s)
# 此种情况用 L1 = [s]
>>> print(L1)
>>> print(type(L1)) 输出:
['H', 'a', ' ', 'h', 'a']
<class 'list'>

列表的常见操作

  • 访问

    • 使用下标操作,也叫索引
    • 列表的元素索引是从0开始
  • 切片操作
    • 对列表进行任意一段的截取
    • 截取之后,创建一个新的列表

>>> L1 = [22,23,45,65,342,545]
#使用下标访问
>>> print(L1[0])
#如果下标超标 会报错 list index out of range 输出:
22 --------------------------------------------------------------------------------------------------- # 切片操作需要注意取值范围,左包括右不包括
>>> L1 = [1,2,3,4,5,6,7,8,9,10] >>> print(L1[1:7]) # 下面结果说明切片后生成的是一个全新的列表
# 通过内置函数id可以判断出切片是否生成了全新的列表
# id的作用是用来判断两个变量是否是一个变量
>>> L2 = L1[0:10] #把L1的值全部赋给 L2变量
>>> print(id(L1)) #通过id比较发现内存地址不同
>>> print(id(L2)) #这说明切片后是生成了全新的列表 # 切片下标可以为空
>>> print(L1[:4]) #从开头截取到下标3 因为右不包括 所以取不到下标4
>>> print(L1[2:]) #从下标2开始截取到结尾
>>> print(L1[:]) #从开头到结尾 即全部 输出:
[2, 3, 4, 5, 6, 7]
4543225360
4542443760
[1, 2, 3, 4]
[3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 分片可以控制增长幅度,默认增长幅度为1
>>> print(L1[::1]) # 等于print(L1[:])
>>> print(L1[::2]) 输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 3, 5, 7, 9] # 下标可以超出范围,超出后不再考虑多余下标内容
>>> print(L1[:100]) 输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] --------------------------------------------------------------------------------------------------- # 下标值,增长幅度可以为负数
# 如果下标值为负数,表明顺序是从右往左
# 规定:数组最后一个数字的下标是-1 # 这样子输出的为空,这是因为默认是从左向右移动
>>> print(L1[-2:-5]) # 如果想利用负数下标打印7,8,9 则
>>> print(L1[-2:-5:-1]) #此时虽然打印出来了但是顺序是 9 8 7是反着的 # 调整打印的顺序
>>> print(L1[-5:-2:1]) #此时顺序虽然对了 但是下标不对了 这是由于左包括 右不包括 #最终调整
>>> print(L1[-4:-1:1]) 输出:
[]
[9, 8, 7]
[6, 7, 8]
[7, 8, 9]

tuple(元祖)

  • 可以理解成一个不允许更改的列表

# tuple的创建 # 1. 直接用小括号创建
>>> ta = ()
>>> print(type(ta)) # 特殊情况:当用小括号创建一个元素的tuple的时候
>>> tb = (100) # 这种情况下 只有一个元素 并不识别这是一个tuple 因为可能是数学中的小括号 所以不识别 这是特例 需要加逗号表示这是一个tuple
>>> print(type(tb)) >>> tc = (100,)
>>> print(type(tc)) # 2.直接用逗号
>>> ta = 100,
>>> print(type(ta)) >>> ta = 100, 200, 300, #多个元素时 后面可以跟 也可以不跟
>>> print(type(ta)) # 3.使用tuple定义
>>> ta = tuple()
>>> print(ta) >>> li = [1,2,3,"hahah ha"]
>>> tb = tuple(li) # 这种创建方式必须要求tuple的参数是可迭代的 例如一个数字就不行
>>> print(tb)
>>> print(li) 输出:
<class 'tuple'>
<class 'int'>
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
()
(1, 2, 3, 'hahah ha')
[1, 2, 3, 'hahah ha']

tuple其余特征跟list基本一致

  • 有序
  • 可以访问不可以被修改
  • 元素可以是任意类型

# tuple索引操作
>>> la = ["i","love","China"]
>>> print(la)
>>> ta = tuple(la)
>>> print(ta[2]) 输出:
['i', 'love', 'China']
China # tuple分片操作
>>> print(ta[:])
>>> print(ta[:2])
>>> print(ta[-1::-1]) 输出:
('i', 'love', 'China')
('i', 'love')
('China', 'love', 'i') --------------------------------------------------------------------------------------------------- # 元祖的相加
>>> ta = 100,200,300
>>> tb = ("I","love","China")
>>> tc = ta + tb
>>> print(tc) 输出:
(100, 200, 300, 'I', 'love', 'China') # tuple 乘法 >>> tc = tb * 2
>>> print(tc) 输出:
('I', 'love', 'China', 'I', 'love', 'China') --------------------------------------------------------------------------------------------------- # tuple 成员检测
print(tb)
>>> if "China" in tb:
print("在的") >>> if "I" not in tb:
print("不在") 输出:
('I', 'love', 'China')
在的 # 元祖遍历
>>> for i in tb:
print(i) 输出:
I
love
China --------------------------------------------------------------------------------------------------- ta = ((10,20,30),("i","love","China"),(100,200,300))
# 嵌套元祖的 访问
# 1. 双层循环访问 每个元素都是一个元祖 再遍历每一个元祖即可取出
>>> for i in ta:
print(i)
for j in i:
print(j) >>> print("------分割线-------") # 单层循环 此种方式 i,j,k要跟元祖的元素个数对应
>>> for i,j,k in ta:
print(i,j,k) 输出:
(10, 20, 30)
10
20
30
('i', 'love', 'China')
i
love
China
(100, 200, 300)
100
200
300
------分割线-------
10 20 30
i love China
100 200 300 --------------------------------------------------------------------------------------------------- # 常用元祖函数
>>> ta = (123,232,45,34)
# len:长度
>>> print(len(ta))
# max/min:最大值/ 最小值
>>> print(max(ta)) >>> tb = (1,2,3,"love") #会报错 int和str类型不能比较
>>> print(max(tb)) 输出:
4
232
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-29-e86ab84987e6> in <module>
7
8 tb = (1,2,3,"love")
----> 9 print(max(tb)) TypeError: '>' not supported between instances of 'str' and 'int' # count:对某一元素计数
>>> ta = (1,2,3,34,2,2,2,2)
>>> print(ta.count(2))
#index:某一元素所在的位置
>>> print(ta.index(1)) 输出:
5
0 --------------------------------------------------------------------------------------------------- # tuple的特殊用法
>>> a = 100
>>> b = "I hahah"
# 要求对a,b值进行互换
# 此种用法是python的特殊用法 在其他语言中一般是借助一个中间变量
>>> print(a,b)
>>> a,b = b,a
>>> print(a,b) 输出:
100 I hahah
I hahah 100

集合

  • 跟数学中集合的概念一致
  • 内容无序 + 内容不重复

# 集合的定义 # 1.通过set关键字
>>> sa = set()
>>> print(sa)
>>> print(type(sa)) # 2. 使用list创建
>>> li = [1,2,3,4,45,54,34,1,2]
>>> sb = set(li)
>>> print(sb) # 3. 使用大括号 注意是大括号 用小括号会报错
>>> sc = {1,2,3,4,45,54,34,1,2,4545,6757,345}
>>> print(sc) 输出:
set()
<class 'set'>
{1, 2, 3, 4, 34, 45, 54}
{1, 2, 3, 4, 34, 4545, 6757, 45, 54, 345} --------------------------------------------------------------------------------------------------- # in 操作
>>> if 2 in sc:
print(22222) >>> if 23 in sc:
print(1111) >>> for i in sc: #通过循环可以看出 set确实是无序的
print(i) 输出:
22222
1
2
3
4
34
4545
6757
45
54
345 --------------------------------------------------------------------------------------------------- # 集合的另一种遍历
>>> sa = {(1,2,3),(4,5,6),("I","love","China")} >>> for i,j,k in sa:
print(i,j,k) 输出:
I love China
4 5 6
1 2 3 # 集合的生成式
>>> sa = {1,2,3,4,5,6,7,8,9,10}
# 利用sa生成一个sb
>>> sb = {i for i in sa}
>>> print(sb) >>> sc = {i for i in sa if i % 2 == 0}
>>> print(sc) # 双重for循环
# 把sa中的每一个元素的平方生成一个新的集合
# 1. 用一个for
>>> sd = {i**2 for i in sa}
>>> print(sd) # 2.使用 enumerate
>>> for index, every in enumerate(sa):
print (index , every) # 3.使用 iter() 迭代器
>>> for every in iter(sa):
print (every) 输出:
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
{2, 4, 6, 8, 10}
{64, 1, 4, 36, 100, 9, 16, 49, 81, 25}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, 28, 30, 32, 35, 36, 40, 42, 45, 48, 49, 50, 54, 56, 60, 63, 64, 70, 72, 80, 81, 90, 100}
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
1
2
3
4
5
6
7
8
9
10 --------------------------------------------------------------------------------------------------- # 集合的内置函数
# len:长度
>>> print(len(se))
# max/min :最值
# add:向集合中添加元素
>>> sa = {1,2,3,4,5,6,7,3,2,1}
>>> print(sa) #使用add添加元素打印的结果却是None >>> print(sa.add(0))
>>> sb = sa
>>> print(sb)
>>> sb.update({8,9,10})
>>> print(sb) # clear:清空 输出:
42
{1, 2, 3, 4, 5, 6, 7}
None
{0, 1, 2, 3, 4, 5, 6, 7}
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} --------------------------------------------------------------------------------------------------- # 删除操作
# remove 和 discard的区别
>>> sa = {1,2,3,4,5,6,7}
>>> print(sa)
>>> sa.remove(5)
>>> print(sa)
#使用discard和remove都可以删除set当中的元素,
#区别就是remove的元素在set当中没有的话会报错,而discard不会。 #像上面的sa 集合 如果我执行remove(5)两次就会报错 因为第一次已经删除了
#第二次sa集合中已经没有了 而用discard(5) 执行几次都不会报错 输出:
{1, 2, 3, 4, 5, 6, 7}
{1, 2, 3, 4, 6, 7} # pop弹出集合的一个内容
# 删除的内容是随机的
# 删除的内容没什么规律 随机
>>> sa = {1,2,3,4,5,6,7}
>>> print(sa)
>>> sa.pop()
>>> print(sa)
>>> sa.pop()
>>> print(sa)
>>> sa.pop()
>>> print(sa) 输出:
{1, 2, 3, 4, 5, 6, 7}
{2, 3, 4, 5, 6, 7}
{3, 4, 5, 6, 7}
{4, 5, 6, 7} --------------------------------------------------------------------------------------------------- # 集合的数学操作
# intersection:交集
>>> sa = {1,2,3,4,5,6}
>>> sb = {4,5,6,7,8,9}
#sa 和 sb的交集
>>> print(sa.intersection(sb)) #difference: 差集
>>> print(sa.difference(sb)) #差集的另一种表示
>>> print(sa - sb) #union:并集 注意 并集是无法用+计算的
>>> print(sa.union(sb)) 输出:
{4, 5, 6}
{1, 2, 3}
{1, 2, 3}
{1, 2, 3, 4, 5, 6, 7, 8, 9}

frozenset冰冻集合

  • 不允许修改的集合

# 冰冻集合
>>> print(sa)
>>> sb= frozenset(sa)
>>> print(sb) 输出:
{1, 2, 3, 4, 5, 6}
frozenset({1, 2, 3, 4, 5, 6})

总结

数据结构是重点,以上只是总结了一部分,还需要多加练习和思考,彻底弄懂。

Python学习记录4-列表、元祖和集合的更多相关文章

  1. Python学习笔记---切片 列表 元祖 字典 集合

    列表[1,2,3,2]#[] 元祖(1,2,3,2)#() 字典{1:2,3:2}#{} 集合{1,2,3,2}#{} 1,集合与列表的区别,集合里不能有重复元素 2.字典与集合的区别,都是用花括号表 ...

  2. Python学习day4 数据类型Ⅱ(列表,元祖)

    day4 知识补充&数据类型:列表,元祖 1.知识补充 1.编译型/解释型 编译型:在代码编写完成之后编译器将其变成另外一个文件教给你算计执行. 代表语言:Java,c,c++ ,c#, Go ...

  3. Python基础5:列表 元祖 字典 集合

    [ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...

  4. Python基础5:列表 元祖 字典 集合 Json

    [ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...

  5. python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍

    目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...

  6. python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍

    目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...

  7. python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍

    目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...

  8. Python入门 [输出,注释,列表,元祖,集合,字典,if,while,for]

    print("Hello Python") #输出 ''' 多行注释 用 三个引号 ''' a=1 #赋值 变量首字母只能书字母下划线 第二个字符数字,字母,下划线 声明一个列表 ...

  9. python 中的 字符串 列表 元祖 字典

    str 1 格式化输出 %法 第一种 %s+tuple %d+tuple name = input('请输入你的姓名:') age = input('请输入你的年龄:') hobby = input( ...

  10. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

随机推荐

  1. Excel转html工具类

    有时需要将Excel展示在页面上,所以需要将Excel转化为html,这里封装一个工具类. Excel和servlet访问效果如下图示: 工具类代码: POIReadExcelToHtmlUtil.j ...

  2. centos6.x一直停留在进度条的问题

    由于屏幕关闭加上长时间没有操作可能导致centos进行深度休眠,此时只能通过电源键来强制重启.可以通过修改X11的配置来禁止休眠,配置文件为/etc/X11/xorg.conf,注意修改此文件前记得备 ...

  3. 实现两个DataTable的联合查询

    如方法一描述:将子表的数组追加到主表数组的下面.从而实现类似于视图(单表)的效果. 那么Left Join(Inner Join)和Right Join(Outer Join) 将如何实现呢? 明天仔 ...

  4. 知识点整理-网络IO知识总结

    UNIX 系统下的 I/O 模型有 5 种 同步阻塞 I/O.同步非阻塞 I/O.I/O 多路复用.信号驱动 I/O 和异步 I/O 什么是I/O 所谓的I/O 就是计算机内存与外部设备之间拷贝数据的 ...

  5. 慎用rm -rf

    首先,搞个回收站在~下 .bashrc或者.bash_profile加入 mkdir -p ~/.trash alias rm=trash alias r=trash alias rl='ls ~/. ...

  6. ORA-00054:Orcacle表锁定

    查询被锁的session_id select session_id from v$locked_object; 查询结果----------------------SESSION_ID8 查询被锁se ...

  7. ip routing 开启三层路由模式

    no ip router是关闭路由协议,no ip routing 是关闭三层的路由工作模式 no ip route是删除某条(静态)路由,比如no ip router 0.0.0.0 0.0.0.0 ...

  8. Paid consultation (currently free 20190901)

    Master of Electrical Engineering, Chongqing University Range:01 College entrance examination, major, ...

  9. CVPapers - Computer Vision Resource

    To add links (PDF, project,...) you can use the online tool. Computer Vision Paper Indexes ICCV:  20 ...

  10. 生成SSH秘钥连接github(详细教程)

    第一步.首先,检查下自己之前有没有已经生成: 在开始菜单中打开git下的git bash(当然,在其他目录下打开git bash也是一样的): 然后执行 cd ~/.ssh 第二步.如果能进入到.ss ...