序列(sequence)五种类型:列表 元组 集合 字典 字符串

@ 复习Python从入门到精通/明日科技编著(清华大学出版社)所记录的代码,个人记录不迷路。2023年1月23日-24日-25日
@ 序列(sequence):列表 元组 集合 字典 字符串
@ 列表和元组比较:都是序列,列表是可变序列,它的元素可随时被修改删除,元组是不可变序列;元组处理速度快,可以作为字典的索引;
@ 字典创建 {‘key1’:‘value1’,‘key2’:‘value2’}; dict(zip(list1,list2))
@ 集合创建 直接创建 set函数

# -*- coding:utf-8 -*-    # 编码注释  等同于 #coding=utf8  -*- 无特殊含义,仅仅是美观
import datetime
import time
import os
import random
"""
   @ 复习Python从入门到精通/明日科技编著(清华大学出版社)所记录的代码,个人记录不迷路。2023年1月23日-24日-25日
   @ 序列(sequence):列表 元组 集合 字典 字符串
   @ 列表和元组比较:都是序列,列表是可变序列,它的元素可随时被修改删除,元组是不可变序列;元组处理速度快,可以作为字典的索引;           
   @ 字典创建  {'key1':'value1','key2':'value2'}; dict(zip(list1,list2))
   @ 集合创建  直接创建 set函数
 
"""
x3 = list(range(0, 20, 3))
x3 = x3 * 2
print("输出对象x3的类型", type(x3))
print("使用item循环输出列表元素")
for item in x3:   # 循环输出元素内容
    print(item, '\t', end='')
print('')
print("使用enumerate输出索引及元素内容")
for index, item in enumerate(x3):    # 使用enumerate列举索引和值
    print(index, '-', item, '\t', end='')
print('')

print('任意一个整数按如下规则运算后终将归于1:如是偶数除以2,否则乘以3加1')
number = []
start = True
i = int(145)
while start:
    if i == 1:
        break
    if i % 2 == 0:
        i /= 2
        number.append(int(i))
    else:
        i = i * 3 + 1
        number.append(int(i))
print(number)
number2 = [int(x * 10-1) for x in number]  # 循环创建列表
print(number2)
number.sort()    # ?排序无用,为何呢??  答案:对象方法需要单独一行执行
print('采用列表对象方法sort排序', number)
number3 = sorted(number)
print('number3 = ', number3)

char = ['Hong', 'Fei', 'Yin', 'Xue']
print(char)
#   print('对象方法无效', char.sort())    # ?排序无用,为何呢?? 输出结果为None 对象的方法需要单独一行执行
char.sort()
print(char)
char.reverse()
print(char)

str1 = "人生到处知何似"
str2 = "应是飞鸿踏雪泥"
str3 = "泥上偶然留指爪"
str4 = "鸿飞那复计东西"
author = " 宋. 苏轼  "
print(author[3])
mianchi = [list(str1), list(str2), list(str3), list(str4)]
print("诗句列表打印", mianchi)
print("\n---横排版---\n")
print(author)
for i in range(0, 4):
    for j in range(0, 7):
        if j % 7 == 0:
            print("")
        print(mianchi[i][j], end='')
print("\n")

print("\n---竖排版---")
mianchi.reverse()
print("诗句反转后的列表", mianchi)
for i in range(0, 7):
    for j in range(0, 4):
        if j == 3:
            print(mianchi[j][i], " ", author[i], " ")
        else:
            print(mianchi[j][i], " ", end='')

print("元组示范应用", "单个元素元组创建时一定要加 , 否则是字符串类型;空元组不需要加,")
tuple1 = ("对酒当歌 人生几何")   # 类型是字符串
tuple2 = ("对酒当歌 人生几何",)  # 类型是元组
tuple3 = ()                  # 类型是元组
print(type(tuple1), type(tuple2), type(tuple3))
list_random = []
list_random.append(int(5))   # 使用对象方法后不能重新命名变量名称
for i in range(1, 10):
    list_random.append(random.randint(1, 100))
list_random.sort()
print(list_random)

print("课后习题一:根据输入月份数字循环输出英文月份,输入数字值超出【1-12】后自动退出程序")
print("程序bug,不能识别数字以外的输入")
list_month = ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'August', 'Sep', 'Oct', 'Dec', 'Nov']
#  input_month = int(input())
input_month = 19
print("输入月份的类型", type(input_month))
start = True
while start:
    if 0 < input_month <= 12:
        print(input_month, '对应的月份英文是:', list_month[input_month-1])
        input_month = int(input())
    else:
        print(input_month, '不是正确的月份数字,自动退出程序')
        start = False

print("课后习题二:根据列表检查用户名唯一性")
list_name = ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'August', 'Sep', 'Oct', 'Dec', 'Nov']
name_check = 'yinxue'
if list_name.count(name_check) > 0:  # 使用count方法统计输入用户名出现的次数,如果大于0表示用户名已被占用
    print("用户名已存在,请重新输入用户名")
else:
    print("用户名可以使用")

print("字典和集合示例代码")
list_h = [random.randint(1, 100) for i in range(0, 20)]  # 用随机数函数创建列表
tuple_h = tuple(range(0, 40, 1))
print(list_h)
print(tuple_h)
dict_h = dict(zip(tuple_h, list_h))
for index, item in enumerate(tuple_h):     # 使用元组enumerate函数比例元组索引和元素值
    if index < len(dict_h):                # ??如何判断索引值是否超出字典索引长度呢?
        print(item, '-', dict_h.get(int(item)), '\t', end='')
print('')

set_a = {'鸿飞', '印雪', '泥上', '指爪'}
set_b = {1, 3, 5, 7, 9, 20}
set_c = set("鸿飞印雪,泥上指爪")
set_d = {'鸿飞', '那复', '计', '东西'}
set_a.add('隙中驹')  # 只能添加一个元素
set_b.add('石中火')
set_c.add('梦中身')
print(set_a)
print(set_b)
print(set_a)
print(set_a | set_c)

print("Chapt_7:字符串")
"""
GB2312收纳了7445个字符。GB2312编码都由2字节构成。
GBK微软对GB2312-80扩展,利用起未使用的编码空间,收录了所有Unicode及GB13000中的汉字全部字符。GBK 亦采用双字节表示,
总体编码范围为 8140-FEFE总计 23940个码位
"""
str1 = "飞"
str1_gbk_encode = str1.encode('GBK')
str1_gb2312_encode = str1.encode('gb2312')
str1_utf8_encode = str1.encode('utf-8')
print(str1, '的GBK编码是', str1_gbk_encode)
print(str1, '的gb312编码是', str1_gb2312_encode)
print(str1, '的utf-8编码是', str1_utf8_encode)
code_utf8 = b'\xe9\xa3\x9e'
print('飞 汉字对应的十六进制编码', hex(39134))
str1_utf8_decode = code_utf8.decode('utf-8')
print('utf8解码后字符是', str1_utf8_decode)
for i in range(0, 50000):
    if chr(i) == '飞':
        print(i, '-', chr(i), '\t', end='')
print('')
str1 = "||||||人 生|到 处|知 |何 似,应 是|飞 鸿|踏|雪 泥|||||"
print("根据|分割字符串", str1.split('|'))
print("根据空格分割字符串", str1.split(' '))
print("检索字符串中出现|的次数:", str1.count('|'))
str2 = 'HONGFEIyinxueDuijiuDangge'
print(str2, '小写转换后', str2.lower())
print(str2, '大写转换后', str2.upper())
print(str1, '去除特殊字符后:', str1.strip('|'))
template_a = '姓名:{:<3}\t 出生日年份:{:<3} \t 去世年份:{:<3} \t 出生地:{:5} \t 出生年份16进制表示{:y>#7x} \t 月薪{:2f}'
# 不能写成 0:#x,否则报错 ValueError: cannot switch from automatic field numbering to manual field specification
print(template_a.format("苏轼", 1037, 1101, "四川眉山", 1037, 6666.88))
print("-----------------")

time_debug = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))  # 时间函数之输出标准可读日期
print("当前时间函数", datetime.datetime.now())
print(time_debug)
# 记录程序页面调试记录,调试记录保存到txt文件中
file_name_run = os.path.basename(__file__)   # 获取当前运行文件的文件名
fp = open(r'E:\Yinxue\Debug_history.txt', 'a+')
print("调试时间 ", str(time_debug), "调试的文件名", file_name_run, file=fp)
fp.close()

运行结果
输出对象x3的类型 <class ‘list’>
使用item循环输出列表元素
0 3 6 9 12 15 18 0 3 6 9 12 15 18
使用enumerate输出索引及元素内容
0 - 0 1 - 3 2 - 6 3 - 9 4 - 12 5 - 15 6 - 18 7 - 0 8 - 3 9 - 6 10 - 9 11 - 12 12 - 15 13 - 18
任意一个整数按如下规则运算后终将归于1:如是偶数除以2,否则乘以3加1
[436, 218, 109, 328, 164, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
[4359, 2179, 1089, 3279, 1639, 819, 409, 1239, 619, 309, 939, 469, 1419, 709, 2139, 1069, 3219, 1609, 4839, 2419, 1209, 3639, 1819, 909, 2739, 1369, 4119, 2059, 1029, 3099, 1549, 4659, 2329, 6999, 3499, 1749, 5259, 2629, 7899, 3949, 11859, 5929, 17799, 8899, 4449, 13359, 6679, 3339, 1669, 5019, 2509, 7539, 3769, 11319, 5659, 2829, 8499, 4249, 12759, 6379, 3189, 9579, 4789, 14379, 7189, 21579, 10789, 32379, 16189, 48579, 24289, 72879, 36439, 18219, 9109, 27339, 13669, 41019, 20509, 61539, 30769, 92319, 46159, 23079, 11539, 5769, 17319, 8659, 4329, 12999, 6499, 3249, 9759, 4879, 2439, 1219, 609, 1839, 919, 459, 229, 699, 349, 1059, 529, 1599, 799, 399, 199, 99, 49, 159, 79, 39, 19, 9]
采用列表对象方法sort排序 [1, 2, 4, 5, 8, 10, 16, 20, 23, 31, 35, 40, 41, 46, 47, 53, 61, 62, 70, 71, 80, 82, 91, 92, 94, 103, 106, 107, 109, 121, 122, 124, 137, 142, 155, 160, 161, 164, 167, 175, 182, 184, 206, 214, 218, 233, 242, 244, 251, 263, 274, 283, 310, 319, 322, 325, 328, 334, 350, 364, 377, 395, 412, 425, 433, 436, 445, 466, 479, 484, 488, 502, 526, 566, 577, 593, 638, 650, 668, 700, 719, 754, 790, 850, 866, 890, 911, 958, 976, 1079, 1132, 1154, 1186, 1276, 1300, 1336, 1367, 1438, 1619, 1732, 1780, 1822, 2051, 2158, 2308, 2429, 2734, 3077, 3238, 3644, 4102, 4616, 4858, 6154, 7288, 9232]
number3 = [1, 2, 4, 5, 8, 10, 16, 20, 23, 31, 35, 40, 41, 46, 47, 53, 61, 62, 70, 71, 80, 82, 91, 92, 94, 103, 106, 107, 109, 121, 122, 124, 137, 142, 155, 160, 161, 164, 167, 175, 182, 184, 206, 214, 218, 233, 242, 244, 251, 263, 274, 283, 310, 319, 322, 325, 328, 334, 350, 364, 377, 395, 412, 425, 433, 436, 445, 466, 479, 484, 488, 502, 526, 566, 577, 593, 638, 650, 668, 700, 719, 754, 790, 850, 866, 890, 911, 958, 976, 1079, 1132, 1154, 1186, 1276, 1300, 1336, 1367, 1438, 1619, 1732, 1780, 1822, 2051, 2158, 2308, 2429, 2734, 3077, 3238, 3644, 4102, 4616, 4858, 6154, 7288, 9232]
[‘Hong’, ‘Fei’, ‘Yin’, ‘Xue’]
[‘Fei’, ‘Hong’, ‘Xue’, ‘Yin’]
[‘Yin’, ‘Xue’, ‘Hong’, ‘Fei’]

诗句列表打印 [[‘人’, ‘生’, ‘到’, ‘处’, ‘知’, ‘何’, ‘似’], [‘应’, ‘是’, ‘飞’, ‘鸿’, ‘踏’, ‘雪’, ‘泥’], [‘泥’, ‘上’, ‘偶’, ‘然’, ‘留’, ‘指’, ‘爪’], [‘鸿’, ‘飞’, ‘那’, ‘复’, ‘计’, ‘东’, ‘西’]]

—横排版—

宋. 苏轼

人生到处知何似
应是飞鸿踏雪泥
泥上偶然留指爪
鸿飞那复计东西

—竖排版—
诗句反转后的列表 [[‘鸿’, ‘飞’, ‘那’, ‘复’, ‘计’, ‘东’, ‘西’], [‘泥’, ‘上’, ‘偶’, ‘然’, ‘留’, ‘指’, ‘爪’], [‘应’, ‘是’, ‘飞’, ‘鸿’, ‘踏’, ‘雪’, ‘泥’], [‘人’, ‘生’, ‘到’, ‘处’, ‘知’, ‘何’, ‘似’]]
鸿 泥 应 人
飞 上 是 生 宋
那 偶 飞 到 .
复 然 鸿 处
计 留 踏 知 苏
东 指 雪 何 轼
西 爪 泥 似
元组示范应用 单个元素元组创建时一定要加 , 否则是字符串类型;空元组不需要加,
<class ‘str’> <class ‘tuple’> <class ‘tuple’>
[5, 8, 8, 21, 31, 33, 43, 45, 53, 67]
课后习题一:根据输入月份数字循环输出英文月份,输入数字值超出【1-12】后自动退出程序
程序bug,不能识别数字以外的输入
输入月份的类型 <class ‘int’>
19 不是正确的月份数字,自动退出程序
课后习题二:根据列表检查用户名唯一性
用户名可以使用
字典和集合示例代码
[48, 19, 19, 3, 60, 16, 13, 75, 35, 61, 22, 62, 54, 24, 78, 86, 74, 36, 86, 16]
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
0 - 48 1 - 19 2 - 19 3 - 3 4 - 60 5 - 16 6 - 13 7 - 75 8 - 35 9 - 61 10 - 22 11 - 62 12 - 54 13 - 24 14 - 78 15 - 86 16 - 74 17 - 36 18 - 86 19 - 16
{‘鸿飞’, ‘印雪’, ‘指爪’, ‘隙中驹’, ‘泥上’}
{1, 3, 20, 5, ‘石中火’, 7, 9}
{‘鸿飞’, ‘印雪’, ‘指爪’, ‘隙中驹’, ‘泥上’}
{‘鸿飞’, ‘印雪’, ‘泥’, ‘指爪’, ‘鸿’, ‘隙中驹’, ‘雪’, ‘爪’, ‘飞’, ‘泥上’, ‘指’, ‘印’, ‘梦中身’, ‘上’, ‘,’}
Chapt_7:字符串
飞 的GBK编码是 b’\xb7\xc9’
飞 的gb312编码是 b’\xb7\xc9’
飞 的utf-8编码是 b’\xe9\xa3\x9e’
飞 汉字对应的十六进制编码 0x98de
utf8解码后字符是 飞
39134 - 飞
根据|分割字符串 [‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘人 生’, ‘到 处’, ‘知 ‘, ‘何 似,应 是’, ‘飞 鸿’, ‘踏’, ‘雪 泥’, ‘’, ‘’, ‘’, ‘’, ‘’]
根据空格分割字符串 [’||||||人’, ‘生|到’, ‘处|知’, ‘|何’, ‘似,应’, ‘是|飞’, ‘鸿|踏|雪’, ‘泥|||||’]
检索字符串中出现|的次数: 17
HONGFEIyinxueDuijiuDangge 小写转换后 hongfeiyinxueduijiudangge
HONGFEIyinxueDuijiuDangge 大写转换后 HONGFEIYINXUEDUIJIUDANGGE
||||||人 生|到 处|知 |何 似,应 是|飞 鸿|踏|雪 泥||||| 去除特殊字符后: 人 生|到 处|知 |何 似,应 是|飞 鸿|踏|雪 泥
姓名:苏轼 出生日年份:1037 去世年份:1101 出生地:四川眉山 出生年份16进制表示yy0x40d 月薪6666.880000

当前时间函数 2023-01-26 08:17:25.221487
2023-01-26 08:17:25

进程已结束,退出代码0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值