python---[列表]lsit

内置数据结构(变量类型)

  -list

  -set

  -dict

  -tuple

    -list(列表)

      -一组又顺序的数据组合

      -创建列表

        -空列表

        list1 = []
        print(type(list1))
        print(list1)

        list2 = [100]
        print(type(list2))
        print(list2)

        list3 = [2, 3, 1, 4, 6, 5, 6]
        print(type(list3))
        print(list3)

        list4 = list()
        print(type(list4))
        print(list4)


        运行结果:
        <class 'list'>
        []
        <class 'list'>
        [100]
        <class 'list'>
        [2, 3, 1, 4, 6, 5, 6]
        <class 'list'>
        []

    -列表常用操作

      -访问

        -使用下表操作

        -列表的位置是从0开始

        list1 = [2, 3, 1, 4, 6, 5, 6]
        print(list1[3])

        print(list1[0])

        

        运行结果:

        4

        2

    -分片操作

    -注意截取的范围, 包含左边的下标值,不包含右边的下标值

    -下标值可以为空,如果不写左边下标值默认为0,右边下标值最大数加一,即表示截取最后一个数据

      list1 = [2, 3, 1, 4, 6, 5, 6]
      print(list1[:])
      print(list1[:4])
      print(list1[3:])

      运行结果:

      [2, 3, 1, 4, 6, 5, 6]
      [2, 3, 1, 4]
      [4, 6, 5, 6]

      

      -分片可以控制增长幅度,默认增长幅度为1

      list1 = [2, 3, 1, 4, 6, 5, 6]
      print(list1[:])
      print(list1[1:6:1])
      print(list1[1:6:2])

      运行结果:

      [2, 3, 1, 4, 6, 5, 6]
      [3, 1, 4, 6, 5]
      [3, 4, 5]

      

      -下标可以超出范围,超出后不在考虑多余下表内容

      list1 = [2, 3, 1, 4, 6, 5, 6]
      print(list1[2:10])

      运行结果:

      [1, 4, 6, 5, 6]

 

      -下标值, 增长幅度可以为负数

      -为负数,表明顺序是从右往左

      -规定:数组最后一个数字的下标是-1

      

      -分片之负数下标

      -默认分片总是从左往右截取

      -即正常情况,分片左边的值一定小于右边的值

      list1 = [2, 3, 1, 4, 6, 5, 7]
      print(list1[-2:-4])
      print(list1[-4:-2])
      print(list1[-2:-4:-1])
      print(list1[-3:-5:-1])

      运行结果:

      []
      [4, 6]
      [5, 6]
      [6, 4]

 

      -分片操作是生成要给新的list

        -内置函数id,负责显示一个变量或者数据的唯一确定编号

        a = 100
        b = 200
        print(id(a))
        print(id(b))
        c = a
        print(id(c))

        运行结果:

        1967290496
        1967293696
        1967290496
        100

        -通过id可以直接判断出分片是从新生成了一份数据还是使用的同一份数据

        

        -如果两个id之一样,则表明分片产生的列表是使用的同一地址同一份数据

        -否则,则表明分片是重新生成了一份数据,即一个新的列表,然后把数据拷贝到新列表中

          -通过id知道,list2和list3是同一份数据,验证代码如下:

          list1 = [2, 3, 1, 4, 6, 5, 7]
          list2 = list1[:]
          list3 = list2
          print(id(list1))
          print(id(list2))
          print(id(list3))

          list1[0] = 100
          print(list1)
          print(list2)
          list2[1] = 100
          print(list2)
          print(list3)

          运行结果:

          2252262765960
          2252261913544
          2252261913544
          [100, 3, 1, 4, 6, 5, 7]
          [2, 3, 1, 4, 6, 5, 7]
          [2, 100, 1, 4, 6, 5, 7]
          [2, 100, 1, 4, 6, 5, 7]

- List(列表)

 1  1 # del删除
 2  2 # 如果使用del之后, id的值和删除钱不一样, 则说明删除生成一个新的list
 3  3 b = [1, 2, 3, 4, 5, 6]
 4  4 print(id(b))
 5  5 del b[2]
 6  6 print(id(b))
 7  7 print(b)
 8  8 # del 一个变量之后不能在继续使用此变量
 9  9 del b
10 10 print(b)
11 
12 运行结果:
13 2429916837256
14 2429916837256
15 [1, 2, 4, 5, 6]
16 NameError: name 'b' is not defined
del删除命令
 1 # 列表相加
 2 # 使用加号连接两个列表
 3 a = [1, 2, 3, 4]
 4 b = [5, 6, 7, 8, 9]
 5 c = ['a', 'b', 'c']
 6 d = a + b + c
 7 print(d)
 8 
 9 运行结果:
10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c']
View Code
1 # 使用乘号操作列表
2 # 列表直接跟一个整数相乘
3 # 相当于把n个列表连接在一起
4 a = [1, 2, 3, 4]
5 b = a * 3
6 print(b)
7 
8 运行结果:
9 [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
list相乘
 1 # 成员资格运算
 2 # 就是判断一个元素是否在list里面
 3 a = [1, 2, 3, 4, 5, 6, 7]
 4 b = 8
 5 c = 5
 6 # 返回一个布尔值
 7 print(b in a)
 8 print(c in a)
 9 运行结果:
10 False
11 True
资格运算
 1 # 成员资格运算
 2 # 就是判断一个元素是否在list里面
 3 a = [1, 2, 3, 4, 5, 6, 7]
 4 b = 8
 5 c = 5
 6 # 返回一个布尔值
 7 print(b in a)
 8 print(c in a)
 9 print(c not in a)
10 
11 运行结果:
12 [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
13 False
14 True
15 False
资格运算

 

 

 1 # for i in list
 2 a = [1, 2, 3, 4, 5]
 3 for i in a:
 4     print(i, end=" ")
 5 print()
 6 
 7 b = ["a", "b", "c", "d"]
 8 for i in b:
 9     print(i, end=" ")
10 print()
11 
12 for i in range(1,10):
13     print(i, end=" ")
14 
15 print(type(range(1, 10)))
16 
17 # while 循环访问list
18 # 一般不使用while遍历list
19 c = [1, 2, 3, 4, 5, 6, 7]
20 lenth = len(c)
21 indx = 0
22 while indx < lenth:
23     print(c[indx], end=" ")
24     indx += 1
25 
26 
27 
28 运行结果
29 1 2 3 4 5 
30 a b c d 
31 1 2 3 4 5 6 7 8 9 <class 'range'>
32 1 2 3 4 5 6 7 

 

 

 

 1 # 双层列表循环
 2 # a 为嵌套列表, 或者叫双层列表
 3 a = [["one", 1], ["two", 2], ["tree", 3]]
 4 for k, v in a:
 5     print(k, "--", v)
 6 
 7 # b = [["one", 1, "eins"], ["two", 2], ["tree", 3, 4, 5, 6]]
 8 # for k, v in b:
 9 #     print(k, "--", v)
10 # # 不能这么使用
11 
12 c = [["one", 1, "eins"], ["two", 2, "zwei"], ["tree", 3, "drei"]]
13 for k, v, w in c:
14     print(k, "--", v, "--", w)
15 
16 # 列表内涵:list content
17 # 通过简单的方法创作列表
18 # for 创建
19 a = ['a', 'b', 'c']
20 #用list a创建一个list b 、
21 # 下面代码的含义是, 对于所有a中的元素, 逐个放入新列表b中
22 b = [i for i in a]
23 print(b)
24 
25 # 对于c中所以元素乘以10, 生成一个新list
26 c = [1, 2, 3, 4, 5]
27 #用list c创建一个list d 、
28 # 下面代码的含义是, 对于所有c中的元素, 逐个放入新列表d中
29 d = [i*10 for i in c]
30 print(d)
31 
32 # 还可以过滤原来list中的内容并放入新列表
33 # 比如有列表e, 需要把所有e中的偶数生成新的列表f
34 e = [x for x in range(1, 31)]#生成也1,30 的列表
35 # 把f中所以偶数生成一个新列表f
36 f = [m for m in e if m % 2 == 0]
37 print(f)
38 
39 # 列表生成式可以嵌套
40 # 有两个列表a, b
41 a = [i for i in range(1, 4)]#生成list a
42 print(a)
43 b = [i for i in range(100, 400) if i % 100 == 0]
44 print(b)
45 
46 # 列表生成式可以嵌套, 此时等于俩个for循环嵌套
47 c = [m+n for m in a for n in b]
48 print(c)
49 
50 # 上面代码类似下面代码
51 for m in a:
52     for n in b:
53         print(m+n, end="  ")
54 print()
55 # len:求列表长度
56 a = [x for x in range(1, 100)]
57 print(len(a))
58 # max:求列表中的最大值
59 print(max(a))
60 b = ['man', 'film', 'python']
61 print(max(b))
62 
63 # list:将其他格式的数据转换成list
64 a = [1, 2, 3]
65 print(list(a))
66 s = "I love python"
67 print(list(s))
68 
69 # 把range产生的内容转换成list
70 print(list(range(12, 19)))

# 关于列表的函数

 1 # 关于列表的函数
 2 
 3 list1 = ['a', 'i love xj', 45, 766, 5+4j]
 4 print(list1)
 5 # append插入一个内容
 6 a = [i for i in range(1,5)]
 7 print(a)
 8 a.append(100)
 9 print(a)
10 # insert:指定位置插入
11 # insert(index, data), 插入位置是insert前面(完成后处于什么位置)
12 a.insert(3, 200)
13 print(a)
14 # del:删除
15 # pop, 从对应位拿出一个元素, 即把最后一个元素取出来
16 last_ele = a.pop()
17 print(last_ele)
18 print(a)
19 
20 # remove:在列表中删除指定的值的元素
21 # 如果被删除的值没在list中,则报错
22 # 即, 删除list指定值的操作应该使用try。。。excepty语句,或者先进行判断
23 print(id(a))
24 a.remove(200)
25 print(a)
26 print(id(a))

运行结果:
['a', 'i love xj', 45, 766, (5+4j)]
[1, 2, 3, 4]
[1, 2, 3, 4, 100]
[1, 2, 3, 200, 4, 100]
100
[1, 2, 3, 200, 4]
2354949945480
[1, 2, 3, 4]
2354949945480

 1 # clear:清空
 2 a = [1, 2, 3, 4, 5]
 3 
 4 print(a)
 5 print(id(a))
 6 a.clear()
 7 print(a)
 8 print(id(a))
 9 print("--------------")
10 # 如果不需要列表地址保持不变, 则清空列表可以使用以下方式
11 b = [1, 2, 3]
12 print(b)
13 print(id(b))
14 b = list()
15 b = []
16 print(b)
17 print(id(b))

运行结果:
[1, 2, 3, 4, 5]
1834734417288
[]
1834734417288
--------------
[1, 2, 3]
1834734417160
[]
1834734417160  #加上b = list()地址还是保持不变


# 如果不需要列表地址保持不变, 则清空列表可以使用以下方式
b = [1, 2, 3]
print(b)
print(id(b))
# b = list()
b = []
print(b)
print(id(b))


运行结果:
[1, 2, 3]
2191356032264
[]
2191355209608  #不加上b = list()地址会发生改变

 

 1 # reverse:翻转列表内容,原地翻转
 2 a = [1, 2, 3, 4, 5]
 3 print(a)
 4 print(id(a))
 5 a.reverse()
 6 print(a)
 7 print(id(a))
 8 
 9 运行结果:
10 [1, 2, 3, 4, 5]
11 1986270295432
12 [5, 4, 3, 2, 1]
13 1986270295432

 

 1 # extend:扩展列表,两个列表,把一个直接拼接到后一个上
 2 a = [1, 2, 3, 4, 5]
 3 b = [6, 7, 8, 9, 10]
 4 print(a)
 5 print(id(a))
 6 a.extend(b)
 7 print(a)
 8 print(id(a))
 9 运行结果:
10 [1, 2, 3, 4, 5]
11 1657976485256
12 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
13 1657976485256

 

 
 1 # count:返查找列表中指定值或元素的个数
 2 a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 3 print(a)
 4 a.append(8)
 5 a.insert(4, 8)
 6 print(a)
 7 a_len = a.count(8)
 8 print(a_len)
 9 
10 运行结果:
11 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
12 [1, 2, 3, 4, 8, 5, 6, 7, 8, 9, 10, 8]
13 3

 

 1 # copy:拷贝, 浅拷贝
 2 # 列表类型变量赋值实例
 3 a = [1, 2, 3, 4, 5, 666]
 4 print(a)
 5 # list类型,简单赋值操作,是传地址
 6 b = a
 7 b[-1] = 777
 8 print(a)
 9 print(id(a))
10 print(b)
11 print(id(b))
12 
13 print("*" * 20)
14 b = a.copy()
15 print(a)
16 print(id(a))
17 print(b)
18 print(id(b))
19 
20 print("*" * 30)
21 b[-1] = 888
22 print(a)
23 print(b)
24 
25 运行结果:
26 [1, 2, 3, 4, 5, 666]
27 [1, 2, 3, 4, 5, 777]
28 2546992182664
29 [1, 2, 3, 4, 5, 777]
30 2546992182664
31 ********************
32 [1, 2, 3, 4, 5, 777]
33 2546992182664
34 [1, 2, 3, 4, 5, 777]
35 2546992182536
36 ******************************
37 [1, 2, 3, 4, 5, 777]
38 [1, 2, 3, 4, 5, 888]

 

 
1
# cpoy:拷贝,浅拷贝和深拷贝区别 2 # 出现下面问题是,copy函数是个浅拷贝,即只可拷贝一层内容 3 a = [1, 2, 3, [10, 20, 30]] 4 b = a.copy() 5 print(id(a)) 6 print(id(b)) 7 print(id(a[3])) 8 print(id(b[3])) 9 10 a[3][2] = 666 11 print(a) 12 print(b) 13 14 运行结果: 15 2337052980168  #a和b的id不一样 16 2337053832456   17 2337053832584  #a和b内部深一层的id是一样的 18 2337053832584   19 [1, 2, 3, [10, 20, 666]]  20 [1, 2, 3, [10, 20, 666]]

 







 

转载于:https://www.cnblogs.com/Slxc/p/9705360.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

唤醒计算机运行此任务_如何停止Windows 8唤醒计算机以运行维护

唤醒计算机运行此任务Windows 8 comes with a new hybrid boot system, this means that your PC is never really off. It also means that Windows has the permission to wake your PC as it needs. Here’s how to stop it from waking up your PC to do maintenance tasks…

转整型_SPI转can芯片CSM300详解、Linux驱动移植调试笔记

一口君最近移植了一款SPI转CAN的芯片CSM300A&#xff0c;在这里和大家做个分享。一、CSM300概述CSM300(A)系列是一款可以支持 SPI / UART 接口的CAN模块。1. 简介CSM300(A)系列隔离 SPI / UART 转 CAN 模块是集成微处理器、 CAN 收发器、 DC-DC 隔离电源、 信号隔离于一体的通信…

matlab练习程序(二值图像连通区域标记法,一步法)

这个只需要遍历一次图像就能够完全标记了。我主要参考了WIKI和这位兄弟的博客&#xff0c;这两个把原理基本上该介绍的都介绍过了&#xff0c;我也不多说什么了。一步法代码相比两步法真是清晰又好看&#xff0c;似乎真的比两步法要好很多。 代码如下&#xff1a; clear all; c…

pc微信不支持flash_在出售PC之前,如何取消对Flash内容的授权

pc微信不支持flashWhen it comes to selling your old digital equipment you usually should wipe it of all digital traces with something like DBAN, however if you can’t there are some precautions you should take–here’s one related to Flash content you may h…

绘制三维散点图_SPSS统计作图教程:三维散点图

作者&#xff1a;豆沙包&#xff1b;审稿&#xff1a;张耀文1、问题与数据最大携氧能力是身体健康的一项重要指标&#xff0c;但检测该指标成本较高。研究者想根据性别、年龄、体重、运动后心率等指标建立预测最大携氧能力的模型&#xff0c;招募了100名研究对象&#xff0c;测…

使用lodash防抖_什么,lodash 的防抖失效了?

戳蓝字「前端技术优选」关注我们哦&#xff01;作者&#xff1a;yeyan1996https://juejin.im/post/6892577964458770445应某人的要求被迫营业&#xff0c;望各位看官不要吝啬手中的赞-。-背景在使用 uni-app 开发小程序时&#xff0c;有个填写表单的需求&#xff0c;包含两个输…

Ubuntu 12.10中的8个新功能,Quantal Quetzal

Ubuntu 12.10 has been released and you can download it now. From better integration with web apps and online services to improvements in Unity, there are quite a few changes – although none of them are huge or groundbreaking. Ubuntu 12.10已发布&#xff0c…

背单词APP调研分析

前言&#xff1a;随着我国网络经济重心向移动端的转移&#xff0c;移动教育领域获得的关注度在持续放大。互联网的发展和移动设备的普及&#xff0c;我们开始在移动设备上学习&#xff0c;各种学习教育软件如雨后春笋&#xff0c;越来越多&#xff0c;就背单词软件来说&#xf…

cdh中使用hue使用教程_我可以在户外使用Philips Hue灯泡吗?

cdh中使用hue使用教程Philips Hue lights are great to have in your house, and they can add a lot of convenience to your living space. However, what if you want to use these smart bulbs outdoors in porch lights or flood lights? Will Philips Hue bulbs work pr…

弄断过河电缆_你说的是:剪断电缆线

弄断过河电缆Earlier this week we asked you if you’d cut the cable and switched to alternate media sources to get your movie and TV fix. You responded and we’re back with a What You Said roundup. 本周早些时候&#xff0c;我们问您是否要切断电缆并切换到其他媒…

路由销毁上一页_路由器原理(数据通信)

路由&#xff1a;对数据包选择路径的过程路由器(也叫网关)智能选择数据传输路由的设备&#xff0c;其端口数量较少&#xff01;功能&#xff1a;连接网络1.连接异构网络以太网、ATM网络、FDDI网络2.连接远程网络局域网、广域网隔离广播将广播隔离在局域网内路由选择网络安全地址…

您可能没有使用的最佳三星Galaxy功能

Samsung packs its flagship phones with a slew of features—some are even better than stock Android. Either way, there are a lot of things on these phones that you may not be using. Here are some of the best. 包三星旗舰手机用的特性-摆有的甚至比普通的Android…

win7更新错误0x800b0109_win7更新漏洞后产生0x0000006B蓝屏的解决方法图解

这几天不少网友在使用win7更新补丁后就蓝屏了&#xff0c;代码为0x0000006b。发生这一蓝屏问题的都是安装了2016年四月份推出的安全更新补丁&#xff0c;安装后就出现蓝屏&#xff0c;有的网友表示没问题&#xff0c;有的直接蓝了。这个蓝屏重启后依旧&#xff0c;安全模式进不…

如何使用facebook_如果每个人都已经开始使用Facebook,Facebook能否继续发展?

如何使用facebookThere are only so many people on earth, and so many hours in the day. Is that starting to limit the growth of social media? 地球上只有那么多人&#xff0c;一天中有很多小时。 这是否开始限制社交媒体的增长&#xff1f; Think about how much time…

2018-10-03-Python全栈开发-day60-django序列化-part3

联合唯一 clean_字段方法只能对某个字段进行检查&#xff0c;当clean方法执行完之后&#xff0c;最后还会执行clean方法&#xff0c;在clean方法中&#xff0c;可以通过获取数据字典中的值然后进行验证 from django.shortcuts import render,HttpResponsefrom django import fo…

mac按文件名查找文件_如何在Mac上查找和删除大文件

mac按文件名查找文件Freeing up disk space on a full hard drive can be difficult, especially when it’s full of small files. However, there are some excellent tools for macOS that let you find the files taking up the most space and delete the ones you don’t…

dmg是什么文件格式_什么是DMG文件(以及我该如何使用)?

dmg是什么文件格式DMG files are containers for apps in macOS. You open them, drag the app to your Applications folder, and then eject them, saving you the hassle of the dreaded “Install Wizard” of most Windows apps. So if all they are is a folder for an a…

mysql索引三个字段查询两个字段_mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?...

情况描述&#xff1a;在MySQL的user表中&#xff0c;对a,b,c三个字段建立联合索引&#xff0c;那么查询时使用其中的2个作为查询条件&#xff0c;是否还会走索引&#xff1f;根据查询字段的位置不同来决定&#xff0c;如查询a, a,b a,b,c a,c 都可以走索引的&#…

canon相机api中文_您应该在佳能相机上掌握的10种相机设置

canon相机api中文Your camera is a tool, and you should be able to use it with total confidence. You should never have to dig through the manual or play around with random buttons trying to work out how to do something on a shoot. Here are the most important…

spring-boot基础概念与简单应用

1.spring家族 2.应用开发模式 2.1单体式应用 2.2微服务架构 微服务架构中每个服务都可以有自己的数据库 3.微服务架构应当注意的细节 3.1关于"持续集成,持续交付,持续部署" 频繁部署、快速交付以及开发测试流程自动化都将成为未来软件工程的重要组成部分 可行方案(如…