python 入门之路 (6)

python 入门之路 (6)

1. 序列

1.1 基本概念

序列是python最基本的一种数据结构,用于保存一组有序的数据,都有一个唯一的位置(索引)与之对应,并且序列中的数据会按照添加的顺序来分配索引
数据结构指计算机中数据的存储方式

1.2 序列的分类

可变序列:序列中的元素可以改变,如列表list,字典dict
不可变序列:序列中的元素不可变,如字符串str,元组 tuple

2. 列表 list

列表是python中的一个对象
列表的作用:
保存多个有序数据
用于存储不同的对象

2.1 列表的创建

通过[]创建空列表
例:

lst = []
lst = [1,'pyhton',None, True, max(1,2,3)]

我们可以通过索引(index)来获取列表中的元素,索引就是元素在列表中的位置,列表当中每一个位置都会唯一对应了一个索引 索引是从0开始,列表的第一个位置就是0,第二个位置是1 以此类推
注: 索引可以为负数,从后往前获取元素,最后第一个数为-1,以此类推,如:

print(lst[2])
print(lst[-2])
# 返回结果 
# None
# True

len() 函数可以用于获取列表的长度(列表中元素的个数),为列表的最大索引数+1

print(len(lst))
# 返回结果 5

2.2 切片

(1)切片指从现有列表中获取一个子列表,可以通过切片来获取指定的元素
(2)语法:
列表名[起始索引:结束索引:步长]
(3)通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素,左闭右开
(4)起始位置和结束位置的索引可以不写
a. 省略结束位置,则会从当前位置一直截取到最后
b. 省略开始位置, 则会从第⼀个元素截取到结束的元素,但是不包括结
束的元素
c. 同时省略开始位置和结束位置, 则会从第⼀个元素开始截取到最后⼀
个元素
(5)步⻓表示每次获取元素的间隔,默认是1(可以省略不写)
(6)步⻓不能是0,但可以是是负数

hero = ['钢铁侠','蜘蛛侠','黑寡妇','绿巨人']
print(hero) # ['钢铁侠', '蜘蛛侠', '黑寡妇', '绿巨人']
lst = hero[0:2:1]
print(lst) # ['钢铁侠', '蜘蛛侠']
# 步长可以省略默认值为1
# 步长可以为负数但是不能为0
print(hero[1:3:1]) # ['蜘蛛侠', '黑寡妇']
print(hero[1:3]) # ['蜘蛛侠', '黑寡妇']
print(hero[1:3:-1]) # []
print(hero[3:1:-1]) # ['绿巨人', '黑寡妇'] 
# 如果省略结束位置 则从当前的位置会一直截取到最后
print(hero[1:]) # ['蜘蛛侠', '黑寡妇', '绿巨人']
# 如果省略开始位置 则会从第一个元素截取到结束位置,但是不包括结束位置的元素
print(hero[:2]) # ['钢铁侠', '蜘蛛侠']
# 同时省略开始位置和结束位置, 则会从第⼀个元素开始截取到最后
print(hero[::-1]) # ['绿巨人', '黑寡妇', '蜘蛛侠', '钢铁侠']

2.3 通用操作

##+ 和 *
##+ 可以将两个列表拼接成⼀个列表

lst = [1,2,3] + [4, 5,6]
# [1, 2, 3, 4, 5, 6]

##* 可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘
法运算)

lst = [1,2,3] * 2
# [1, 2, 3, 1, 2, 3]

in 和 not in
in⽤来检查指定元素是否在列表当中
not in ⽤来检查指定元素是否不在列表当中

hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长','蜘蛛侠','蜘蛛侠']
r = '绿巨人' in hero
r =  '绿巨人' not in hero
print(r) # True,False

len() 获取列表中元素的个数
max() 获取列表中最⼤值
min() 获取列表中最⼩值

lst = [1,2,3,4,5,6]
print(min(lst),max(lst)) # 1 6

函数与方法的区别
函数function:xx()
方法method:yy.xx()

list.index(x[, start[, end]])
第⼀个参数 获取指定元素在列表中的位置
第⼆个参数 表示查找的起始位置
第三个参数 表示查找的结束位置

print(hero.index('蜘蛛侠')) # 得到第一个蜘蛛侠的位置 2
print(hero.index('蜘蛛侠'3,7)) # 得到一个范围内出现的蜘蛛侠出现的第一个位置 6

list.count(x) 统计指定元素在列表中出现的个数

print(hero.count('蜘蛛侠')) # 3

2.4 修改列表

hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇','蚁人','美国队长']

通过索引修改

hero[0] = '雷神'
print(hero) # ['雷神', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '美国队长']

通过切片修改,起始就是给切⽚的内容重新赋值,但是赋值的内容必须是⼀
个序列

hero[0:3] = 'abcd' # ['a', 'b', 'c', 'd', '黑寡妇', '蚁人', '美国队长']
hero[1:3] = '123' # ['钢铁侠', '1', '2', '3', '黑寡妇', '蚁人', '美国队长']
hero[1:3] = ['123'] # ['钢铁侠', '123', '黑寡妇', '蚁人', '美国队长']
hero[0:0] = '雷神' # ['雷', '神', '钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '美国队长']
hero[0:0] = ['雷神'] # ['雷神', '钢铁侠', '绿巨人', '蜘蛛侠', '黑寡妇', '蚁人', '美国队长']

当设置了步⻓时,序列中元素的个数必须和切⽚中元素的个数保持⼀致

hero[::2] = ['雷神','灭霸','黑豹'] # ['雷神', '绿巨人', '灭霸', '黑寡妇', '黑豹', '美国队长']

删除元素
(1)del list[起始:结束]
(2)list = []

对于字符串的修改,可先将字符串转换为列表类型,再进行修改

s = 'python' # 不可变序列
# s[1] = 'j' # TypeError: 'str' object does not support item assignment
s = list(s)
s[1] = 'j'  
print(s) # ['p', 'j', 't', 'h', 'o', 'n']

2.5 列表的方法

方法格式作用
list_name.append(element_new)向列表的最后添加⼀个元素
list_name.insert(index,element_new)向列表指定位置插⼊⼀个元素
list_name.extend(list_new)使用新的序列来扩展当前的序列 ,一般添加到原列表的末尾
list_name.clear()清空列表
list_name.pop(index)根据索引删除并返回指定元素
list_name.remove(element)删除指定元素 (如果相同值的元素有多个,只会删除第⼀个)
list_name.reverse()翻转列表
list_name.sort(reverse=False)来对列表中的元素进⾏排序 reverse=True 反序,False 正序

2.6 遍历列表

2.6.1 for循环

通过for 循环遍历列表
语法:

for 变量 in 序列(遍历的规则):
      代码块

注意: for循环的代码块会执⾏多次,序列中有⼏个元素就会执⾏⼏次每执⾏
⼀次就会将序列中的⼀个元素赋值给变量
,所以我们可以通过变量来获取列表
中的元素

hero = ['钢铁侠','绿巨人','蜘蛛侠','黑寡妇']
#  遍历列表 指的是将列表中的元素取出来
i = 0
# while i < 4: # 元素已知,或拿到长度
while i < len(hero): # 元素已知,或拿到长度
    print(hero[i])
    i += 1

for h in hero:
    print(h)

2.6.2 range()函数

语法:
range(start:stop:step)
·start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于
range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1,
2, 3, 4]没有5
step:步⻓,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

作业

# 作业1 现有a=[1,2,3,4,5,6],不通过函数的形式实现列表的反转并写出推导过程

a = [1,2,3,4,5,6]
# 对于列表的切片操作,有形如 s[开始:结束:步长]的形式
# 当不考虑步长时
print(a[0:6])   # 打印 [1, 2, 3, 4, 5, 6]
# 当省略开始时或省略结束时
print(a[:6])   # print(a[:]) 均打印[1, 2, 3, 4, 5, 6]
# 当考虑步长时,默认步长为1,即a[0:6]==a[0:6:1]
# 为保证所有元素不变,其位置反转,只需令步长为-1,即
print(a[::-1])

# 作业3 有两个列表lst1=[11,22,33]和lst2=[22,33,44],获取相同的元素
# 方法1
# lst1 = [11,22,33]
# lst2 = [22,33,44]
# i = 0
# while i < 3:
#
#     j = 0
#     while j < 3:
#
#         if lst1[j] == lst2[i]:
#
#             print(lst1[j])
#             # break
#             j += 1 # 此处需要更新迭代的变量值,如果不更新,j一直不变,也就会一直打印
#
#         else:
#
#             j += 1
#
#     i += 1

# 方法2
# lst1 = [11,22,33]
# lst2 = [22,33,44]
# for i in lst1:
#
#     for j in lst2:
#
#         if j == i:
#
#             print(j)

# 作业2 给用户9次机会,猜1-10个整数随机猜数,
# 如果随机出现的数字与用户输入的数字一致,则表示正确,不一致则显示错误,最终结果需要用户怎么也猜不着
count = 9
num_input = int(input(f'请输入1-10内的任意整数,你还有{count}次机会:'))
lst = [1,2,3,4,5,6,7,8,9,10]

while count > 1:

    for i in lst:

        if num_input == i:

            lst.remove(num_input)
            print('错误!')
            # print(lst)
            count -= 1
            num_input = int(input(f'请输入1-10内的任意整数,你还有{count}次机会:' ))

    if count == 1:

        # for i in lst:
            lst.remove(num_input)
            print(f'你猜错了!正确答案为{lst}')
            # # count -= 1
            # num_input = int(input(f'请输入1-10内的任意整数,你还有{count}次机会:'))








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值