Python学习第六课

序列

  • 序列⽤于保存⼀组有序的数据,所有的数据在序列当中都有⼀个唯⼀的位置(索引),并且序列中的数据会按照添加的顺序来分配索引。

序列的分类

  • 可变序列(序列中的元素可以改变):如 列表(list)
  • 不可变序列(序列中的元素不能改变):如 字符串(str)、元组(tuple)

列表

  • 列表中可以保存多个有序的数据
    
  • 列表是⽤来存储对象的对象
    
  • 列表的创建:
    创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可
list1 = [1, 2, 3, 4, 5 ]
切片
  • 获取列表中指定的元素

  • 语法:list[起始位置: 终点位置: 步长]

  • 起始位置:空时默认为 0
    
  • 终点位置:则从当前的开始位置⼀直截取到最后
    
  • 如果开始位置和结束位置都省略, 则会从第⼀个元素开始截取到最后⼀个元素
    
  • 如果开始位置和结束位置都省略, 则则会从第⼀个元素开始截取到最后⼀个元素
    
  • 步长:表示每次获取元素的间隔,空时默认为 1,不能为 0
    
列表操作符
  • 列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
    如下所示:
    在这里插入图片描述
嵌套列表
  • 嵌套列表即在列表里创建其它列表,例如:

>>>a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'
修改列表
  • 修改单个元素
    直接对元素赋值即可
nums = [40, 36, 89, 2, 36, 100, 7]
nums[2] = -26  #使用正数索引
nums[-3] = -66.2  #使用负数索引
  • 修改一组元素
nums = [40, 36, 89, 2, 36, 100, 7]
#修改第 1~3 个元素的值
nums[1: 4] = [45.25, -77, -52.5]

运行结果:
[40, 45.25, -77, -52.5, 36, 100, 7]

nums = [40, 36, 89, 2, 36, 100, 7]
#在4个位置插入元素
nums[4: 4] = [-77, -52.5, 999]
print(nums)

运行结果:
[40, 36, 89, 2, -77, -52.5, 999, 36, 100, 7]

  • 如果使用字符串赋值,Python 会自动把字符串转换成序列,其中的每个字符都是一个元素
s = list("Hello")
s[2:4] = "XYZ"
print(s)

运行结果:
[‘H’, ‘e’, ‘X’, ‘Y’, ‘Z’, ‘o’]

  • 也可以指定步长(step 参数),但要求所赋值的新元素的个数与原有元素的个数相同
    nums = [40, 36, 89, 2, 36, 100, 7]
    #步长为2,为第1、3、5个元素赋值
    nums[1: 6: 2] = [0.025, -99, 20.5]
    print(nums)

运行结果:
[40, 0.025, 89, -99, 36, 20.5, 7]

列表的函数与方法

在这里插入图片描述在这里插入图片描述

for循环遍历

  • for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串
>>>languages = ["C", "C++", "Perl", "Python"] 
>>> for x in languages:
...     print (x)
... 
C
C++
Perl
Python
>>>

range()函数

  • 遍历数字序列,可以使用内置range()函数。它会生成数列

>>>for i in range(5):
...     print(i)
...
0
1
2
3
4

  • 使用range指定区间的值:
>>>for i in range(5,9) :
    print(i)
    
5
6
7
8
  • range以指定数字开始并指定不同的增量(甚至可以是负数,也叫做’步长’)
>>>for i in range(-10, -100, -30) :
    print(i)
       
-10
-40
-70
  • 可以结合range()和len()函数以遍历一个序列的索引
>>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
>>> for i in range(len(a)):
...     print(i, a[i])
... 
0 Google
1 Baidu
2 Runoob
3 Taobao
4 QQ

作业

  1. 实现列表反转
# 现在有a=[1,2,3,4,5,6]用多种方式实现列表的反转([6,5,4,3,2,1])并写出推导过程
list = [1,2,3,4,5,6]
list.reverse() #第一种方法
print(list)

list.sort(reverse=True) #第二种方法
print(list)

print(list[::-1]) #第三种方法
  1. 给用户9次机会 猜1-10个数字随机来猜数字。如果随机的数字和用户输入的数字一致则表示正确,如果不一致则表示错误。最终结果要求用户怎么也猜不对
import random
i=1
while 1<10:
    num=int(input('请输入一个1-9的数字:'))
    com=random.randint(1,10)
    if com==num:
        break
    print('未猜中!,你第{}次猜测的数字是{},电脑随机数字是{}'.format(i,num,com))
    i=i+1
  1. 有两个列表 lst1 = [11, 22, 33] lst2 = [22, 33, 44]获取内容相同的元素
lst1 = [11, 22, 33] 
lst2 = [22, 33, 44]
lst3=[]
for i in range(len(lst1)):
    if lst1[i] in lst2:
        lst3.append(lst1[i])
print(lst3)
  1. 现在有8位老师,3个办公室,要求将8位老师随机的分配到三个办公室中
import random
teachers=[1,2,3,4,5,6,7,8]
b=[[],[],[]]
for teacher in teachers:
    room=random.randint(0,2)
    b[room].append(teacher)
print(b)
  1. 要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入。
    用户名长度6-20,用户名必须以字母开头
    密码长度至少6位,不能为纯数字,不能有空格
str1=input('请输入用户名: ')
str2=input('请输入密码: ')
while len(str1)<6 or len(str1)>20:
    print('用户名长度为6-20,请重新输入!')
    str1=input('请输入用户名: ')
    while str1[0].isalpha() == 0:
        print('用户名必须以字母开头!')
        str1=input('请输入用户名: ')
        while len(str2)<6:
            print('密码不能少于6位!')
            str2=input('请输入密码: ')
else:
    while ' ' in str2 or str2.isdigit() == 1:
        print('密码不能为纯数字,不能有空格!')
        str2=input('请输入密码: ')
    else:
        print('密码符合规则')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值