美文网首页
03-字符串,列表,元组 & 字典

03-字符串,列表,元组 & 字典

作者: 痞子_4ae7 | 来源:发表于2020-05-14 11:45 被阅读0次

字符串

用来存储用户名、密码的数据

  • 字符串格式:
    • 双引号或者单引号中的数据,就是字符串
    name='chenduxiu' 
    #或者
    name="zhendexiu"
  • 字符串输出
    • 格式控制符 "%s"
      -例:
    name=”xiaoming“
    profession ='学生'
    address="海淀区神州科技园B座2层"
    print '-'*40
    print("姓名:%s"%name)
    print("职业:%s"%position)
    print ("地址:%s"%address)
    print ('-'*40)
  • 字符串输入
输入的内容 = input("需要输入的内容")
例:通过键盘输入用户名密码
注意:python2的输入为 raw_input()
  • 下标和切片
    • 下标索引:就是指的编号,类似超市储物柜的编号,通过编号就能找到对应的东西
    #例如:
    name="xiaoming"
    aaa=0
    count = len(name)
    while aaa < count:
        print(name[aaa])
        aaa+=1
  • 切片
    • 字符串,列表,元组都支持切片操作
    • 语法
    [起始:结束:步长]  区间位置:左闭右开
  • 例:
    name=‘xiaoming’
    print(name[0:2])
    打印结果   "xi"
    name='0123456789'
    print(name[0:2])
    #从第二个取到最后
    print(name[2:])
    #从头开始取,直到索引值为3的位置(不包括该元素)
    print(name[:3])
    #从索引值为2的位置开始取,直到倒数第一个(不包括倒数第一个)
    print(name[2:-1])
    #从头开始取,每两个切出一个
    print(name[0::2])
    #倒序的内容输出
    print(name[::-1])
    #倒序切出索引5到索引值1中间的数据
    print(name[5:0:-1])
  • 字符串常见操作

    • find/rfind
    #检查str是否包含在str1中,如果是返回开始的索引值,否则返回-1
    str1.find()
    str1="good good study,day day up"
    index = str1.find("stu")
    print(index)
    
    • index/rindex
    跟find()方法一样,只不过目标字符串如果不在要查找的字符串中会报一个异常
    
    • count
    返回str在目标字符串中start-end之间出现的次数
    str1="good good study,day day up"
    print(str1.count("good"))
    
    • replace
    把str1中指定的字符串"good",用“222”进行替换,最多替换2次    
    str1="good good study,day day up"
    print(str1.count("good"))
    str2 = str1.replace("good","222",2)
    print(str2)
    
    • split
    以" "为分割符切片str1
    str1="good good study,day day up"
    array = str1.split(" ")
    print(type(array))
    print(array)
    
    • capitalize
    把字符串的第一个字符大写
    print(str1.capitalize())
    
    • title
    把字符串中的每一个单词的首字母大写
    print(str1.title())
    
    • startswith
    检查字符串是否以指定字符串开头,
    是则返回True,否则返回False
    例:判断是否为有效网址
    
    • endswith
    检查字符串是否以指定字符串结尾,是则返回True,否则返回False  
    例:判断是否为有效邮箱
    
    • lower
    转换字符串中所有的大写字符为小写
    
    • upper
    转换字符串中所有的小写字符为大写
    
    • ljust
    返回一个原字符串左对齐,并使用空格填充至长度width的新字符
    
    
    str1 = "hello"
    print(str1.ljust(10))
    
    • rjust
    返回一个原字符串右对齐,并使用空格填充至长度width的新字符
    
    str1 = "hello"
    print(str1.rjust(10))
    
    • center
    返回一个原字符串居中对齐,并使用空格填充至长度width的新字符
    str1 = "hello"
    print(str1.center(10))
    
    • lstrip
    删除目标字符串左边的空格
    str1 ="    hello    "
    print(str1.lstrip())
    
    • rstrip
    删除目标字符串右边的空格
    str1 ="    hello    "
    print(str1.rstrip())
    
    • strip
    删除目标字符串两边的空格
    str1 ="    hello    "
    print(str1.strip())
    
    • rfind
    类似于find()函数,不过是从右边开始查找
    
    • rindex
    类似与index()函数,不过是从右边开始查找
    
    • partition
    把目标字符串分割成str前,str以及str后三部分,得到一个tuple(元组)
    str1="nihaoma"
     str1.partition("hao")
     ('ni', 'hao', 'ma')
    
    • rpartition
    从右边开始,把目标字符串分割成str前,str以及str后三部分,得到一个tuple(元组)
    str1="nihaoma"
     str1.rpartition("hao")
     ('ni', 'hao', 'ma')
    
    • splitlines
    将目标字符串按照行进行分割,返回一个列表
    str1 = "Hello\nWorld"
    print(str1.splitlines())
    运行结果:
    ['Hello', 'World']
    
    • isalpha
    判断目标字符串中是否所有的字符都为字母,返回True,或者False
    str1 = "123Hello"
    print(str1.isalpha())
    
    • isdigit
    判断目标字符串中是否所有的字符都为数字,返回True或者False
    str1 = "123Hello"
    print(str1.isdigit())
    
    • isalnum
    如果字符串中都是字母或者数字则返回True,否则返回False
    str1="abc123"
    print(str1.isalnum())
    
    • isspace
    如果字符串中只包含空格,则返回True,否则返回False
    
    • join
    将字符串或者列表,元组中的每个元素(字符)使用指定字符连接起来
    li=["one","two","three"]
    str2="_"
    str2 = str2.join(li)
    print(str2)
    

列表介绍

  • 引入:

    • 如何存储班级中所有同学的名字?
  • 语法格式:

names=["李大钊","陈独秀","蔡元培","陈佩斯"]
#注意:比C语言中的数组功能更强大,列表中的元素可以为不同类型
list1=[10,"人",2.5,True]
  • 访问列表中的元素

    • 设置值
    list1[0] = 100
    
    • 获取值
    print(list[0])
    
  • 列表的循环遍历

    • 使用for循环进行遍历
    #例:
    list1=[10,"人",2.5,True]
    for a in  list1:
        print(a)
    
    • 使用while循环进行遍历
    list1=[10,"人",2.5,True]
    length = len(list1)
    i = 0
    while i < length:
            print(list1[i])
            i += 1
    
  • 列表的常见操作

      • append
      #通过append向指定列表添加元素
      #例:
      list2 =["one",2,"san"]
      list2.append("four")
      print(list2)
      #结果:['one', 2, 'san', 'four']
      
      • extend
      #通过extend可以将一个列表中的元素逐个添加到另外一个列表中
      #例:
      l1=[1,2]
      l2=[3,4]
      l1.extend(l2)
      print(l1)
      #结果:[1, 2, 3, 4]
      
      • insert
      #insert(index,object)在指定的位置处插入元素object
      l1=[1,2]
      l2=[3,4]
      l1.insert(1,l2)
      print(l1)
      #结果:[1, [3, 4], 2]
      
      • in
      如果存在,则返回True,否则返回False
      l1 =[1,2,3,4,5]
      print( 1 in  l1)
      
      • not in
      与in相反
      l1 =[1,2,3,4,5]
      print(1 not  in l1)
      
      • index
      返回元素在列表中的索引值
      index(obj)
      index(obj,fromIndex,toIndex)   区间位置为前闭后开
      如果没有列表中不包含查找元素,会报错
      
      • count
      #返回元素在列表中出现的次数
      list1 = [1,2,3]
      print(list1.count(1))
      
      • del
      #根据下标进行删除
      #例:
      l1 = [2,3,4]
      del  l1[0]
      print(l1)
      #结果:[3,4]
      
      • pop
      #删除最后一个元素
      #例:
      l1 = [2,3,4]
      l1.pop()
      print(l1)
      #结果:[2,3]
      
      • remove
      #根据元素的值进行删除
      l1 = [2,3,4]
      l1.remove(2)
      print(l1)
      #结果:[3,4]
      
    直接通过下标来修改元素
    例:  
    l1=[1,2]
    l1[0] = 100
    print(l1)
    结果:[100,2]
    
    • 排序以及列表反转
    #sort方法将list按特定顺序进行排列,默认为由小到大,参数reverse=True可改为倒序,由大到小
    #例:
    l1 = [2,4,1,9,23]
    l1.sort()
    print(l1)
    #结果:[1,2,4,9,23]
    l1.sort(reverse=True)
    print(l1)
    #结果为:[23,9,4,2,1]
    #反转方法: reverse()
    

列表的嵌套

  • 概念
一个列表中的元素,又是一个列表
  • 嵌套列表的遍历
l1=[[1,2],4,[5,6]]
for l in l1:
    if type(l) == list:
        for ll in l:
            print(ll)
    else:
        print(l)
    print("-"*10)

# 结果为:
1
2
----------
3
----------
4
5
----------
  • 练习
    循环录入3个学生信息(包括name,age)
    使用嵌套列表完成学生信息的存储
class Student:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def get_stu(self):
        stu_list = [self.name, self.age]
        # print(stu_list)
        return stu_list


def save_students():
    students = []
    while True:
        name = input('姓名:')
        if name == 'q':
            break
        age_str = input('年龄:')
        while True:
            if age_str.isdigit() and 0 < int(age_str) < 130:
                age = int(age_str)
                break
            else:
                age_str = input('您输入的年龄超出范围,请重新输入:')
        stu_obj = Student(name, age)
        stu = stu_obj.get_stu()
        students.append(stu)
    print(students)


if __name__ == '__main__':
    save_students()


元组

  • 元组概念
Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用“()”
列表使用"[]"
  • 操作

    • 访问
    t=(1,2,3)
    print(t[0])
    修改或者删除元素的话会报错:
    t[0]= 10
    删除报错:
    t.pop()
    但是可以变向进行删除
    tuple->list(进行删除操作)->tuple
    

字典介绍

  • 字典的引入
#如何存储将多个国家的简称及名字完成对应的存储?
#例如:   CN:中国    JP:日本       US:美国
country = {"CN":"中国","JP":"日本"}
  • 字典中元素的访问:

    • 直接访问
    print(country['CN'])
    打印结果:"中国"
    如果没有"CN"这个key,则会报错
    
    • 通过get方法访问
    value=country.get('CN')
    #这时候value的值为 "中国"
    value = country.get('SH','中国')
    #这个意思是如果有key ‘SH’则得到对应值,没有的话,得到默认值"中国"
    
  • 字典的常见操作1

    • 修改元素
    可以直接进行修改
    student={'name':'陈独秀','age':99}
    student['age']=100
    
    • 添加元素
    student['address']='北京市朝阳区'
    #如果字典中没有'address'这个key,则会将这个元素条件到字典中,如果已经包含这个key
    则新值会将旧值覆盖
    
  • 删除元素

    • del 删除
    #例:
    #删除某个key
    del student['age']
    #删除所有的键值对,删除之后,将不能在进行访问
    
    • clear
    #清空所有的键值对,清除后依旧可以进行访问
    stu.clear()
    
  • 字典的常见操作2

    • len() 键值对个数的获取
    stu={'name':‘xiaoming’,'age':19}
    len(stu)
    #长度为2
    
    • keys()
    #返回一个字典中所有的key的列表
    allKeys= stu.keys()
    for k in allKeys:
        print(k)
        print(allKeys[k])
    
    • values()
    #返回一个包含字典所有value的列表
    stu.values()
    #['xiaoming',19]
    
    • items()
    #返回一个包含所有(键、值) 元组的列表
    stu.items()
    #[('name','xiaoming'),('age',18)]
    
  • 字典的遍历

    • 所有key的遍历
    stu={'name':'xiaoming','age':19}
    for key in stu.keys():
        print(key)
    
    
    • 所有value的遍历
    stu={'name':'xiaoming','age':19}
    for value in stu.values():
        print(value)
    
    • 所有item的遍历
    stu={'name':'xiaoming','age':19}
    for item in  stu.items():
        print(item)
    
    • 所有key和value的遍历
    stu={'name':'xiaoming','age':19}
    for key,value in stu.items():
        print(type(value))
        print("%s=%s"%(key,value))
    

公共方法

  • 公共运算符

    • '+'
    作用:合并、连接
    例:str1="hello"+"world"
    结果:”helloworld“
    list1=[1,2]+[3,4]
    结果:[1, 2, 3, 4]
    例:tuple1=(1,2) + (3,4)
    结果:(1,2,3,4)
    
    • '*'
    作用:复制
    例:  'hello' * 2
    结果: 'hellohello'
    例: [1,2] * 2
    结果:[1,2,1,2]
    例:(1,2) * 2
    (1,2,1,2)
    
    • in
    作用:元素是否存在
    例:
    result = '123' in 'HelloWorld123'
    print(result)
    result= 1 in [1,2]
    print(result)
    result = 2 in (1,2)
    result = 'name' in {'name':'xxx','age':12}
    print(result)
    
    • not in
    作用:元素书否不存在,用法跟in 一样
    
  • python的内置函数

    • len
    作用:得到元素的个数
    例:len([1,2])
    len((1,2))
    获取到的为键值对个数
    len({'name':'xiaoming','age':18})
    
    • max(...)
    作用:获取最大值
    例:
    max(1,2,3)
    max([1,2,3,4])
    找字典中的最大键
    a =max({'a':1,'b':2,'x':3})
    
    • min(...)
    作用: 获取最小值(用法与max一致)
    
    • del
    删除元素或者删除容器
    del 元素/容器变量名
    del list1[0]
    del list1
    
    • 变量.del()
    #在python3中已经不存在这种用法
    list1 = [1,2,3]
    list1.del()
    
  • 引用的使用

    • 什么是引用
    windows中的快捷方式
    家庭地址
    
    • 非引用类型案例:
    a = 10
    b = a
    print(id(a))
    print(id(b))
    b=100
    print(a)
    print(b)
    print(id(a))
    print(id(b))
    
    • 引用类型案例:
    list1 = [1,2,3]
    list2 = list1
    print(id(list1))
    print(id(list2))
    list2[0]=100
    print(list1)
    print(list2)
    print(id(list1))
    print(id(list2))
    
    • 引用类型内存图分析

课后练习

有能力的同学用函数完成
学生管理系统:
1.添加学生
2.查询学生
3.删除学生
4.修改学生
5.退出系统

相关文章

网友评论

      本文标题:03-字符串,列表,元组 & 字典

      本文链接:https://www.haomeiwen.com/subject/brftohtx.html