python数据类型的补充

基础数据类型补充

  1. 字符串 str
    • 字符串的方法及操作

      str

      s1 = 'aLExNb'
      s2 = s1.capitalize() #capitalize首字母大写其它熊谢
      print(s2) #Alexnb

      s3 = s1.swapcase() #swapcase大小写反转
      print(s3) #AleXnB

      msg = 'hello python, hello world' #title每个单词的首字母大写
      print(msg.title()) #Hello Python, Hello World

      s1 = 'barry' #center 居中
      print(s1.center(10)) # barry

      s1 = 'barry' #find 通过元素找索引,找到第一个就返回,找不到返回-1
      print(s1.find('r')) #2
      print(s1.find('x')) #-1

      s1 = 'barry' #index 通过元素找索引,找到第一个就返回,找不到报错
      print(s1.index('x')) #ValueError: substring not found
      print(s1.index('y')) #4

  2. 元组 tuple
  • #元组 tuple
    #元组中如果只有一个元素,并且没有逗号,那么它不是元组,它的数据类型与该元素的数据类型一致.
    tu1 = (1)
    print(tu1,type(tu1))  #1 <class 'int'>
    tu2 = ('alex')
    print(tu2,type(tu2))  #  alex <class 'str'>
    tu3 = [1,2,3]
    print(tu3,type(tu3)) #[1, 2, 3] <class 'list'>
    
    # count 计数
    tu = (1,1,2,3,4,4,4,4,4,5)
    print(tu.count(1)) #2
    
    #index  #通过元素找索引,找到第一个就返回
    tu = ('taibai','alex','alex','yuanhao')
    print(tu.index('alex')) #1
    print(tu.index('taibai')) #0
    
  1. 列表 list

    列表 list

    index

    l1 = ['taibai','alex','laotan']
    print(l1.index('alex')) #1

    sort 给原列表排序 默认从小到大

    l1 = [3,8,9,7,5,2,1,6,4]
    l1.sort()
    print(l1) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
    l1.sort(reverse=True) # 加上reverse=True从大到小
    print(l1)#[9, 8, 7, 6, 5, 4, 3, 2, 1]
    l1.reverse() #反转
    print(l1) #[4, 6, 1, 2, 5, 7, 9, 8, 3]

    列表的相加

    l1 = [1,2,3]
    l2 = [1,2,'taibai','laotan','nanshen']
    l1.extend(l2)
    print(l1 + l2) #[1, 2, 3, 1, 2, 'taibai', 'laotan', 'nanshen', 1, 2, 'taibai', 'laotan', 'nanshen']
    print(l1.extend(l2)) #None
    print(l1) #[1, 2, 3, 1, 2, 'taibai', 'laotan', 'nanshen', 1, 2, 'taibai', 'laotan', 'nanshen']

    列表与数字相乘

    l1 = [1,2,3]
    print(l1*2) #[1, 2, 3, 1, 2, 3]

    删除索引为奇数对应的元素

    l2 = [11,22,33,44,55] #此题有坑

    先分析:我们想要删除索引为奇数的,则删除22与44元素,即l2 =[11,33,44]

    如果我们按照正常思路来解决,就会掉坑里

    下面是正常思路

    for index in range(len(l2)):
    if index %2 == 1:
    l2.pop(index)
    print(l2) #结果为:[11, 33, 44] 并不是我们想要的

    出现上次的结果是因为列表的特性:循环一次就会删除一次,删除一个元素后,后面的就会向前靠一位,就是顶替删除元素的位置举个例子

    就是l1第一次删除为22元素,剩余的元素就组成l2元素即为:l2=[11,33,44,55]

    在此列表中因为第一次索引为1,已经删除过了,此时索引为2的元素是44,索引为3的元素是55

    所以删除55,就是l2=[11, 33, 44]。

    要想得到我们想要的结果我们可以从最后面删除,具体代码为:

    for i in range(len(l2)-1,-1,-1):
    if i%2 == 1:
    l2.pop(i)
    print(l2) #[11, 33, 55]

    此时l2=[11, 33, 55]就是我们想要的结果

    也可以这样做

    del l2[1::2]
    print(l2) #[11, 33, 55]

  2. 字典 dict

    字典 dict

    update非常重要 可以增改 有则覆盖,无则添加

    dic = {'name':'alex','age':18}
    dic.update(height = 175)
    print(dic) #{'name': 'alex', 'age': 18, 'height': 175}
    dic.update(name = '太白金星')
    print(dic) #{'name': '太白金星', 'age': 18, 'height': 175}
    dic.update([('sex','男'),('hobby','开车')]) #面试常考
    print(dic) #{'name': '太白金星', 'age': 18, 'height': 175, 'sex': '男', 'hobby': '开车'}

    dic1 = {'name':'alex','age':18}
    dic2 = {'name':'taibai','sex':'男'}
    dic1.update(dic2)
    print(dic1) #{'name': 'taibai', 'age': 18, 'sex': '男'}
    print(dic2) #{'name': 'taibai', 'sex': '男'}

    fromkeys 公用一个

    dic = dict.fromkeys(('alex',1)) #两个括号表明此时括号里面的元素都是字典的键
    dic1 = dict.fromkeys('alex',1) #一个括号表明第一个为键可以拆开 第二个为值并且值是一样的
    print(dic) #{'alex': None, 1: None}
    print(dic1) #{'a': 1, 'l': 1, 'e': 1, 'x': 1}

    dic2 = dict.fromkeys([1,2,3],[])
    print(dic2) #{1: [], 2: [], 3: []}
    dic2[1].append(666)
    print(dic2) #{1: [666], 2: [666], 3: [666]}

    dic3 = dict.fromkeys(([1,2,3],[])) # 是两个括号就是前面的元素作为键 此时是列表不能作为字典的键
    print(dic3) #TypeError: unhashable type: 'list' #列表不能作为字典的键

  3. 字典中的坑

    循环一个字典时,如果改变这个字典的大小,就会报错

    dic = {'k1':'taibai','k2':'alex','k3':'oldboy','age':18}

    for i in list(dic.keys()):
    print(i)
    if i[0] == 'k':
    dic.pop(i)
    print(dic) #{'age': 18}

    也可以这么做

    dic = {'k1':'taibai','k2':'alex','k3':'oldboy','age':18}
    dic1= []
    for i in dic.keys():
    if 'k' in i:
    dic1.append(i)
    for j in dic1:
    dic.pop(j)
    print(dic) #

posted @ 2019-07-30 13:18  病毒正在入侵...中  阅读(59)  评论(0编辑  收藏  举报