Python系统学习1-6-元组

】目录

一、列表与字符串转换

二、列表推导式

三、元组

1、元组基本操作 

2、元组和列表的内存图

 四、容器思想

homework


一、列表与字符串转换

(1) 列表转换为字符串:

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

# 根据xx条件,循环拼接字符串
# 需求 range(10) 0123456789
# str_result = ""
# for item in range(10):
#     str_result += str(item)
#     # ""+"0"
#     # "0"+"1"
#     # "01"+"2"
#     # 缺点:每次循环相加时,都会产生新数据,替换旧数据
# print(str_result)

# 解决:利用可变数据代替不可变数据
#            列表        字符串
str_result = []
for item in range(10):
    str_result.append(str(item))
result = "".join(str_result)
print(result)

(2) 字符串转换为列表:

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

# 使用一个字符串存储多个信息
list_result = " 唐僧 , 孙悟空 , 八戒 " . split ( "," )
print ( list_result )

练习:

str_context = "I love you" # 将字符串翻转输出
str_list = str_context.split(" ")
str_list_ok = str_list[::-1]
print(" ".join(str_list_ok))

 二、列表推导式

(1) 定义:

使用简易方法,将可迭代对象转换为列表。

(2) 语法:

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

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

(3) 说明:

如果条件不满足,则可迭代对象的元素将被丢弃。

# 练习一
# 生成10--30之间能被3或者5整除的数字
# 结果:[10, 12, 15, 18, 20, 21, 24, 25, 27]
list_result01 = []
for item in range(10,31):
    if item % 3 ==0 or item % 5 == 0:
        list_result01.append(item)
print(list_result01)
list_result02 = [item for item in range(10,31) if item % 3 ==0 or item % 5 == 0]
print(list_result02)

# 练习二
# 生成5 -- 20之间的数字平方
# 结果:[25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]
list_result03 = [item ** 2 for item in range(5,21)]
print(list_result03)

三、元组

列表:由一系列变量组成的可变序列容器

元组:由一系列变量组成的不可变序列容器。

Python系统学习1-6-元组_第1张图片

1、元组基本操作
   创建
   添加  不可变,没有
   定位
   删除  不可变,没有
   遍历
## 创建,列表放元组里,节省内存

tuple_01 =("dd","ee","ff")
list_01 = ["理理","红红"]
tuple_02 = tuple(list_01)

## 定位

# 寻找第二个元素
print(tuple_01[1])
# 前两个
print(tuple_01[:2])

## 遍历

for item in tuple_01:
    print(item)

## 在构建元组的时候,在没有歧义的情况下,可以省略小括号

tuple_03 = 10,20,30
print(tuple_03)

## 元组中如果只有一个元素,必须添加逗号

tuple_04 = ("李琦")
print(tuple_04)   # 不是元组
tuple_05 = ("李琦",)
print(tuple_05)   # 是元组

## 特别小心,下列代码是元组,不是字符串,因为有逗号

name = 10,
print(name)  # 变为元组

## 序列可拆包(字符串,列表,元组)

tuple_01 =("dd","ee","ff")
a,b,c = tuple_01
print(a,b,c)
list_01 = ["理理","红红"]
a,b=list_01
print(a,b)
a,b,c="孙悟空"
print(a,b,c)

# 变量交换
a = 10
b = 20
a,b=b,a  # 变量交换的实质是元组省略小括号

2、元组和列表的内存图

列表:预留空间,自动扩容

元组:按需分配,之后不可变

Python系统学习1-6-元组_第2张图片

 练习:

Python系统学习1-6-元组_第3张图片

我自己画图:

Python系统学习1-6-元组_第4张图片

 四、容器思想

练习1:

"""
练习:
    在终端中输入月份,打印相应的天数.
    1 3 5 7 8 10 12 有 31天
    2 有 29天
    4 6 9 11 有 30天
    超过月份提示月份有误
    效果:
    请输入月份:10
    31天
"""
month = int(input("请输入月份:"))
if 0 < month <= 12:
    if month == 2:
        print("28天")
    elif month == 4 or month == 6 or month == 9 or month==11:
        print("30天")
    else:
        print("31天")
else:
    print("月份输入有误")

# 优化1
month = int(input("请输入月份:"))
if 0 < month <= 12:
    if month == 2:
        print("28天")
    elif month in (4 ,6 ,9 ,11):
        print("30天")
    else:
        print("31天")
else:
    print("月份输入有误")

# 优化2
tuple_month = (31,29,31,30,31,30,31,31,30,31,30,31)
month = int(input("请输入月份:"))
print(tuple_month[month-1])

 练习2:

# 练习2:
# 根据月日,计算是这一年的第几天.
# 公式:前几个月总天数 + 当月天数
# 例如:5月10日
# 计算:31 29 31 30 + 10

tuple_month = (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
month = int(input("请输入月:"))
date= int(input("请输入日:"))
total_day = 0
for i in range(month-1):
    total_day += int(tuple_month[i])
print(total_day+date)

# 使用tuple_month[:2] 会触发浅拷贝

# 优化
total_day = sum(tuple_month[:month-1],date)
print(total_day)

homework

"""
    画出下列代码内存图
"""
list01 = [10, 20, 30]
for item in list01:
    item += 1
print(list01)  # ?

Python系统学习1-6-元组_第5张图片

list02 = [
    [10],
    [20],
    [30],
]
for item in list02:
    item[0] += 1
print(list02)  # ?

Python系统学习1-6-元组_第6张图片

我画的图:

Python系统学习1-6-元组_第7张图片

你可能感兴趣的:(学习)