软件测试第一阶段:web前端技术基础-22-python中的数据结构和列表

python的数据结构类型:

  • 字符型

  • 字典

  • 列表

  • 元组

一、序列

序列:

  • 是python中的一类数据类型,比如字符串、列表  都是一类数据类型

  • 序列类型的对象是可以进行循环便利

1.1 序列特性

  • 索引:指的就是在序列中找指定的元素的哪个编号

  • 切片:指的是从序列中提取一部分内容

  • 加法:序列对象可以将多个序列合并成一个

  • 乘法:可以将序列通过乘法输出多个相同的

1.2 序列操作

1)索引操作

格式:

序列名[索引值]

案例1:

str1 = "hello"    # 定义一个序列
print(str1[0])    # 通过索引值 0 取出这个序列中的第一个元素

案例2:

str = input("请输入内容: ")[2]        #将用户输入进去的内容索引编号为2的元素索引出来
print(str)

2)切片操作

格式:

序列名[索引值1:索引值2]         也就是范围

案例:

str = "abcde boys, i am zxhk"
res1 = str[3:]          #切片
res2 = str[3:9]

print(res1)     # 输出结果是  de boys, i am zxhk
print(res2)     # 输出结果是  de boy

3)加法操作

str1 = "hello "  
str2 = "boys"
str = str1 + str2 
print(str)  

案例:让用户随意输入内容,实现用户输入的内容始终在框内,而且居中

+----------------------------------+
|     asdfasdfasdfasdf asdf asd    |
+----------------------------------+

答案如下:

name = input("请输入一些内容: ")
ege = len(name)
kongge = 3
s = kongge*2
shuzi = ege + s
print("+",end="")
print("-"*shuzi,end="")
print("+")
print("|",end="   ")
print("%s"%(name),end="   ")
print("|")
print("+",end="")
print("-"*shuzi,end="")
print("+",end="")

4)成员资格

  • 判断元素是否在序列当中

  • in\not in

  • 返回的是布尔值:真 假

案例:判断用户输入的内容中是否有c,

  • 如果有,就提示有c,并终止程序

  • 如果没有,就提示无c,并要求用户重新输入,而且最多输入3次

方法一:

n = 1
while n < 4:

    name = input("请您输入一些内容: ")
    if "c" in name:
        print("您的内容中有c")
        break
    else:
        print("您输入的内容中没有c")
        n += 1

方法二:

n = 1
while True:
    if n > 3:
        print("您输入太多次数了")
        break
    name = input("请您输入一些内容: ")
    if "c" in name:
        print("您的内容中有c")
        break
    else:
        print("您输入的内容中没有c")
        n += 1

方法三:

import sys

n = 1
while n < 4:
 name = input("请您输入一些内容:")
 for num in name:

    if num == "c":
        print("您输入的内容中有c")
        sys.exit(3)
    n += 1
else:
    print("您输入的内容中没有c")

二、列表

  • 列表也是序列的一种

  • 列表支持序列的所有的基础操作:加法、乘法、成员关系、切片、索引

2.1 列表基础

定义列表

列表名 = [元素1, 元素2, 元素3 ...]
注意:元素如果是字符串类型,必须家引号,如果是数字,可以加也可以不加

案例:

list1 = ["tom",18,136333333,"河北"]    # 定义一个有四个元素的列表
age = list1[1]                        # 将列表的第二个元素赋值给age
print(age)     

注意:列表的元素可以是多种类型

  • 数字

  • 字符型

  • 列表

案例:

list1 = ["tom",18,["jerr", "jack", "bob"],"河北"]
age = list1[1]                                        #将list1中第2个元素索引出来
child_3_name = list1[2][2]                            #将list1中的第3个元素中的                                                        
print(age)                                                   第三个元素索引出来                               
print(child_3_name)

列表是可变类型

所以可以原地修改列表中的元素的值

list1 = ["tom",18,"136666666","河北"]
print(list1)
list1[1] = 21                            # 将列表的索引是1的那个元素的值修改为21
print(list1)

数据类型互相转换

  • int() 将字符串类型修改为整型

  • float() 将对象转换为浮点数

  • list() 将对象转换成列表

  • join() 将列表中的元素转换【拼接】成一个字符串

将字符串转换为列表

s1 = "i love linux"   
li = list(s1)             #将li的数据类型转换为列表
print(type(li))           #查询li的数据类型
print(li)                 

join的格式

"分隔符".join(列表)

案例:让用户输入1-9的数字,输出结果是1+2+3+4+5+6+7+8+9【注意不是求和】

方法一

n = 1
sum = ""
while n < 10:
  num = input("请输入一个数字:")
  n +=1
  sum = num + sum
sum = list(sum)
ege = "+".join(sum)
print(ege)

方法二

ege = ""
for num in range(1,10):
    name = input("请输入一个数字: ")
    ege += name
ege = list(ege)
shuzi = "+".join(ege)
print(shuzi)

2.2 列表操作

索引

例子:用将第二个元素输出出来

li = ["a","bb","ccc"]
print(li[1])                                  #将索引值为1的元素输出出来

赋值

例子:用abc将li 中的第三个元素覆盖hebei

li = ["tom",18,13666666,"hebei"]
li[3] = "abc"                            #将li中算索引值为三的元素覆盖      
print(li)               

删除元素

  • 删除单个元素

  • 删除多个元素

li = ["tom",18,13666666,"hebei"]
del li[2]    # 删除列表的第二个元素
print(li)
li1 = ["a","b","c","d","e","f","h","i","j","k","m"]
li1[3:7] = ""                                 #将索引值为3至索引值为6的元素进行切片
print(li1)

切片

  • 格式:

列表[start: stop: step]

         列表首:列表尾:步长

  • 正向切片:步长是正数,从左向右截取数据

  • 反向切片:步长是负数,从右向左截取数据

li = ["a","b","c","d","e","f","h","i","j","k","m"]

print(li[0:])        
print(li[0::1])
print(li[0:10])      # 输出列表中的前10个元素
print(li[0:10:3])    # 输出列表中的前10个元素,步长是3
print(li[-1::-1])    

替换操作

  • 替换一个元素,方法同前面讲到的赋值操作

  • 替换多个元素,

2.3 列表的方法

格式:列表名.方法(  内容 )

列表中添加元素

  • +

  • extend:在列表的末尾添加内容

  • append:在列表的末尾添加内容

  • insert:在列表的指定的位置添加内容

案例:让用户输入内容,将用户的输入组合成一个列表,直到用户输入q终止输入,并退出

li =[]                                          #定义一个空列表
while True:
    name =input("请输入一些内容: ") 
    if name =="q":
     break

    else:
                                   
        li.append(name)                        #将name中的内容赋值给空列表中
        print(li)

案例:生成一个1-100的列表

#方法1:用extend结合range

li1 = []                               
li1.extend(range(1,101))                    
print(li1)

# 方法2:循环生成100个数字 - for 版

li = []
for n in range(1, 101):
    li.append(n)

# 方法3:循环生成100个数字 - while 版

li = []
n = 1
while n <= 100:
    li.append(n)
    n += 1

#方法4:手动输入100个数字

li = []
for n in range(1,101):
   number = int(input("请输入一个数字: "))
   li.append(number)

定义空类型的对象

  • 空字符串: str = ""

  • 空列表:str = []

方法2获取列表的元素个数

格式:

  • len(列表名)

案例:让 用户输入一些内容,判断qq一共出现了几次?

方法一:

li=[]
n=1
while n <=4:
    userInput=input("请输入一下内容:")
    if userInput=="n":
        break
    li.append(userInput)       
    n += 1
    num=li.count("qq")

print(num)

方法二:

list1 = []
while True:
    userinput =input("请输入一些字符,如若退出请输入n").strip().lower()
    if userinput == "n":
        break
    else:
         list1.append(userinput)
print(list1)
print(list1.count("qq"))

方法4:找目标元素的索引

格式:

  • 列表名.index(元素)

    • 如果找到了目标元素,那么会得到他的索引值

    • 如果没有目标元素,那么会抛出异常【报错】

案例:将列表 li = ["ab","c","d1","c","bb","p"] 中的 d1 修改为d10【两种方式实现】

li = ["ab","c","d1","c","bb","p"]
li[2]="d10"
print(li)
li = ["ab","c","d1","c","bb","p"]
li[-4]="d10"
print(li)

方法5:删除列表元素

  • del

    • del 列表名[索引]

  • remove

    • 列表名.remove(元素)

  • pop:每次执行pop方法,可以从列表中取出最后一个元素

    • 列表名.pop()

remove是删除首个符合条件的元素

del是根据索引位置来进行删除,也可以删除指定范围的值

pop是返回的是你弹出的那个值

案例:删除li中的第三个元素

li  = ["ab","c","d1","c","bb","p"]   
del li[3]                                    #删除索引号为3的元素
print(li)

案例:删除li中的c

li  = ["ab","c","d1","c","bb","p"]
li.remove("c")                               #删除列表中元素第一个为c的
print(li)

案例:逐一打印输出列表中的元素【至少两种方法实现】

# 方法1
li = ["a", "b", "c", "d"]
li.reverse()                      #将字符串纪进行反转            
num = len(li)                     #获取字符串长度
while num > 0:                    #假如字符串长度小于0 循环结束
    str = li.pop()                 #通过pop的方法将字符串赋值给str
    print(str)
    num -= 1

# 方法2
li = ["a", "b", "c", "d"]
for char in li:
    print(char)

删除

  • del li[0]:删除列表的第一个元素

  • del li:删除列表对象

  • del li[:] 删除列表中的所有元素,列表变成空列表

方法6:列表元素顺序翻转

格式:

  • 列表.reverse()

方法7:字符串翻转

格式:

  • reversed(字符串)

  • 注意:

    • 转换后的结果是一个python对象,必须借助于list方法转换成列表,此时才可以进行显示

案例:将li中的内容逆序显示

li  = ["a","b","c","d"]
print(li)

li.reverse()
print(li)

案例:将字符串abc123转换为321cba

str = "abc123"         # 定义字符串变量 
print(str)             # 输出结果

str = reversed(str)    # 将字符串逆序
li = list(str)         # 将逆序后的字符串对象转换为列表
str = "".join(li)      # 通过join方法,将列表中的元素拼接成字符串
print(str)

方法8:列表元素排序

格式:

  • 列表名.sort()

    • sort中的参数

      • reverse=True 实现逆序排序

案例:li1 = [3,2,1,7,6,4,5] 实现正序和逆序排序

li1 = [3,2,1,7,6,4,5]

li1.sort()
print(li1)

li1.sort(reverse=True)
print(li1)

注意:复制列表对象的方法

  • 新列表=旧列表[:]

案例:将li1的值复制给li2,然后修改li2的最后一个值

li1 = [1,2,3]
li2 = li1[:]

print(id(li1),id(li2))

li2[2] = 4
print(li1)
print(li2)

案例:实现按照列表元素长度排序

li1 = ["aaa","aaaa","aa","a"]
li1.sort(key=len)                       #将li1中的元素按长度进行正序排序    
print(li1)

li1.sort(key=len, reverse=True)        #将li1中的元素按长度进行逆序排序 
print(li1)

方法9:列表推导式

格式:

[表达式  for  var  in  range()]

案例:用列表推导式的方法输出1-10

li =[var for var in range(1,11)]
print(li)

案例:用列表推导式的方法输出1-10的平方

li=[(x**2) for x in range(1,11)]
print(li)

案例:用列表推导式的方法输出1-10之间的偶数

list = [var+1 for var in range(10)if var%2==1]
print(list)

# var 每次循环加一range取值为10每次判断var不是奇数则加入列表list中

补充:

  • max(列表名)                                           #求出列表中最大的数

  • min(列表名)                                             #求出列表中最小的数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值