• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

暖风2020

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Python小白学习笔记四(容器类型 2 列表 )

容器类型 2 列表

列表 list

  定义:由一系列变量组成的可变序列容器。

  基础操作

    1. 创建列表:

        列表名 = []   

        列表名 = list(可迭代对象)

      2.添加元素:

        列表名.append(元素) (追加)

        例如:list_name.append("姓名") #将姓名加到末尾

        列表.insert(索引,元素) (插入)

        如:list.insert(2, "内容") # 2是位置

        例如:list_names.insert(2, "张天旺")

      3.定位元素:

          列表名[索引] = 元素

          变量 = 列表名[索引]

          变量 = 列表名[切片] # 赋值给变量的是切片所创建的新列表 

          列表名[切片] = 容器 # 右侧必须是可迭代对象,左侧切片没有创建新列表。遍历列表:

          正向:

            for 变量名 in 列表名:

            变量名就是元素

          反向:

            for 索引名 in range(len(列表名)-1,-1,-1):

            列表名[索引名]就是元素

      4.删除元素:

          列表名.remove(元素)

            del 列表名[索引或切片]

 1 #    列表 -- 基础操作
 2         定位
 3 #        遍历
 4 list_names = ["马伟帅", "秦世杰", "乔海瑞", "钱涛"]
 5 # 定位
 6 # -- 索引:容器名[整数]
 7 # -- 1. 读取
 8 element = list_names[-1]
 9 print(element)
10 # -- 2. 修改
11 list_names[-1] = "涛涛"
12 print(list_names)
13 
14 # -- 切片:容器名[整数:整数:整数]
15 # -- 1. 通过切片读取,创建新列表(拷贝)
16 names = list_names[:3]
17 print(names)
18 # -- 2. 通过切片修改,遍历右侧数据,依次存入左侧.
19 list_names[:3] = ["帅帅帅", "秦秦", "瑞瑞"]
20 # list_names[:3] = 100 # 因为100不能被for
21 # list_names[:3] = "孙悟空"
22 print(list_names)
23 
24 # 遍历:操作容器每个元素
25 # -- 方式1: for 元素 in 容器
26 # 适用性:从头到尾依次读取
27 for name in list_names:
28     print(name)
29 
30 # -- 方式2:for 索引 in range(开始,结束,间隔):
31 # 适用性:不能用方式1
32 # len(list_names) - 1 是 最大索引(总数-1)
33 # -1 索引可以去到0
34 # -1 倒序
35 
36 # 功能:倒序
37 for i in range(len(list_names) - 1, -1, -1):
38     print(list_names[i])
39 
40 # 功能:修改
41 for i in range(len(list_names)):
42     # 文字长度是3的修改为None
43     if len(list_names[i]) == 3:
44         list_names[i] = None
1 #    列表 -- 基础操作
2 #        删除
3 list_names = ["马伟帅", "秦世杰", "乔海瑞", "钱涛"]
4 # -- 方式1:根据元素删除  列表名.remove(元素)
5 list_names.remove("乔海瑞")
6 
7 # -- 方式2:根据定位删除 del 容器名[索引或者切片]
8 del list_names[0]
9 del list_names[-2:]

  深拷贝和浅拷贝

      浅拷贝:复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程。

          Print_number[0] = 100

      深拷贝:复制整个依懒的变量。

例如:

import copy

list01 = ["北京",["上海","深圳"]]

list02 = list01

list03 = list01[:]

list04 = copy.deepcopy(list01)

list04[0] = "北京04"

list04[1][1] = "深圳04"

print(list01) # 修改深拷贝后的数据,不影响拷贝前

list03[0] = "北京03"# 修改第一层,不影响拷贝前

list03[1][1] = "深圳03"# 修改第二层,影响拷贝前

print(list01) # ?

list02[0] = "北京02"# 等同于修改list01

list02[1][1] = "深圳02"

print(list02) # ?

内存图分析:

              例2:

  列表与字符串转换

       将多个字符串拼接为一个。

          result = "连接符".join(列表)

          result = "".join(列表)

 

        将一个字符串拆分为多个。

            str --> list

            列表 = “a-b-c-d”.split(“分隔符”)

            列表 = “a-b-c-d”.split(“-”)

  列表推导式

    1. 定义:使用简易方法,将可迭代对象转换为列表。

      2.语法:

          变量 = [表达式 for 变量 in 可迭代对象]

          变量 = [表达式 for 变量 in 可迭代对象 if 条件]

  说明:

      如果if真值表达式的布尔值为False,则可迭代对象生成的数据将被丢弃。

  列表推导式嵌套

    1. 语法:变量 = [表达式 for 变量1 in 可迭代对象1 for 变量2 in可迭代对象2]

      2.传统写法:

result = []

for r in  ["a", "b", "c"]:

    for c in ["A", "B", "C"]:

        result.append(r + c)

      3.推导式写法:

result = [r + c for r in list01 for c in list02]

python语言有哪些数据类型:

答:可变对象:例如,列表

                   特点:预留空间(动态)

不可变对象:例如,数值/str/元组...

特点:按需分配(省内存,但是不可变)

 例1:

 1 #    list -- > str
 2     将多个字符串拼接为一个。
 3 #    result = "连接符".join(列表)
 4 
 5 list01 = ["a", "b", "c"]
 6 result = "#".join(list01)
 7 print(result)
 8 
 9 # 需求:根据xx逻辑循环拼接字符串
10 # result = ""
11 # for number in range(10):  # 0~9
12 #     # 每次循环  创建新字符串  产生一个垃圾
13 #     result += str(number)  # "1"  + "2"  -> "12"
14 # print(result)
15 
16 # 核心思想:用可变对象代替不可变对象
17 result = []
18 for number in range(10):  # 0~9
19     # 每次追加都在原列表基础上,没有创建新列表
20     result.append(str(number))
21 result = "".join(result)
22 print(result)

例2:

 1 #    str --> list
 2 #    将一个字符串拆分为多个。
 3 #    列表 = “a-b-c-d”.split(“分隔符”)
 4 
 5 result = "a-b-c-d".split("-")
 6 print(result)
 7 # 应用:取出一个字符串表达的多种信息
 8 # "悟空,猪八戒,唐僧"
 9 datas = "悟空,猪八戒,唐僧".split(",")
10 print(datas)

例3:

 1 #    列表推导式
 2 #        使用简易方式创建列表
 3 #            [操作变量 for 变量 in 可迭代对象 if 条件]
 4 
 5 # list_result = []
 6 # for number in range(1,11):
 7 #     if number % 2:
 8 #         list_result.append(number)
 9 
10 list_result = [number for number in range(1, 11)
11                if number % 2]
12 print(list_result)
13 # list_result = []
14 # for number in range(1,11):
15 #         list_result.append(number ** 2)
16 list_result = [number ** 2 for number in
17                range(1, 11)]

 

posted on 2020-08-09 13:38  暖风2020  阅读(121)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3