美文网首页
Python基础数据类型

Python基础数据类型

作者: o0龙与猫0o | 来源:发表于2020-02-09 19:04 被阅读0次

    列表(list)和元组(tuple)

    列表和元组,都是一个可以放置任意数据类型的有序集合

    l = [1, 2, 'hello', 'world'] # 列表中同时含有 int 和 string 类型的元素
    l
    [1, 2, 'hello', 'world']
     
    tup = ('jason', 22) # 元组中同时含有 int 和 string 类型的元素
    tup
    ('jason', 22)
    
    • 列表是动态的,长度大小不固定,可以随意地增加、删减或者改变元素(mutable)。
    • 而元组是静态的,长度大小固定,无法增加删减或者改变(immutable)。
      如果想对已有的元组 做出改变,可以基于原有的元组,创建新的元组。
      比如,同样添加元素5
    tup = (1, 2, 3, 4)
    new_tup = tup + (5, ) # 创建新的元组 new_tup,并依次填充原元组的值
    new _tup
    (1, 2, 3, 4, 5)
     
    l = [1, 2, 3, 4]
    l.append(5) # 添加元素 5 到原列表的末尾
    l
    [1, 2, 3, 4, 5]
    

    列表和元组 都支持 负数索引,-1表示最后一个元素,-2表示倒数第二个元素
    都支持切片操作,需要注意的是切片操作:包含前面的数字,不包含后面的数字

    l = [1, 2, 3, 4]
    l[1:3] # 返回列表中索引从 1 到 2 的子列表
    [2, 3]
     
    tup = (1, 2, 3, 4)
    tup[1:3] # 返回元组中索引从 1 到 2 的子元组
    (2, 3) 
    

    列表和元组之间的转换
    通过 list()tuple() 函数相互转化:

    list((1, 2, 3))
    [1, 2, 3]
     
    tuple([1, 2, 3])
    (1, 2, 3)
    

    支持的函数

    l = [3, 2, 3, 7, 8, 1]
    l.count(3) 
    2
    l.index(7)
    3
    l.reverse()
    l
    [1, 8, 7, 3, 2, 3]
    l.sort()
    l
    [1, 2, 3, 3, 7, 8]
    
    tup = (3, 2, 3, 7, 8, 1)
    tup.count(3)
    2
    tup.index(7)
    3
    list(reversed(tup))
    [1, 8, 7, 3, 2, 3]
    sorted(tup)
    [1, 2, 3, 3, 7, 8]
    

    count(item) 表示统计 列表/元组 中 item出现的次数
    index(item) 表示返回 列表/元组 中 第一次出现item的索引
    list.reverse()list.sort() 表示 原地倒转列表 和 排序
    reversed()sorted() 同样也会翻转 和 排序,但是会返回新的,原有的不变

    字典(dict)和集合(set)

    字典的创建方式,下面四种相等

    d1 = {'name': 'jason', 'age': 20, 'gender': 'male'}
    d2 = dict({'name': 'jason', 'age': 20, 'gender': 'male'})
    d3 = dict([('name', 'jason'), ('age', 20), ('gender', 'male')])
    d4 = dict(name='jason', age=20, gender='male') 
    d1 == d2 == d3 ==d4
    True
    

    集合的创建方式

    s1 = {1, 2, 3}
    s2 = set([1, 2, 3])
    s1 == s2
    True
    

    集合set不支持索引操作,想要判断一个元素是否在dict或set中,可以使用 value in dict/set来判断

    s = {1, 2, 3}
    1 in s
    True
    10 in s
    False
    
    d = {'name': 'jason', 'age': 20}
    'name' in d
    True
    'location' in d
    False
    

    字典和集合的 增/删/改 操作:

    d = {'name': 'jason', 'age': 20}
    d['gender'] = 'male' # 增加元素对'gender': 'male'
    d['dob'] = '1999-02-01' # 增加元素对'dob': '1999-02-01'
    d
    {'name': 'jason', 'age': 20, 'gender': 'male', 'dob': '1999-02-01'}
    d['dob'] = '1998-01-01' # 更新键'dob'对应的值 
    d.pop('dob') # 删除键为'dob'的元素对
    '1998-01-01'
    d
    {'name': 'jason', 'age': 20, 'gender': 'male'}
     
    s = {1, 2, 3}
    s.add(4) # 增加元素 4 到集合
    s
    {1, 2, 3, 4}
    s.remove(4) # 从集合中删除元素 4
    s
    {1, 2, 3}
    

    字典的排序

    d = {'b': 1, 'a': 2, 'c': 10}
    d_sort_by_key = sorted(d.items(), key = lambda x: x[0])
    d_sort_by_value = sorted(d.items(), key = lambda x: x[1]) 
    d_sorted_by_key
    [('a', 2), ('b', 1), ('c', 10)]
    d_sorted_by_value
    [('b', 1), ('a', 2), ('c', 10)]
    

    集合的排序

    s = {3, 4, 2, 1}
    sorted(s) # 对集合的元素进行升序排序
    [1, 2, 3, 4]
    

    注意:

    d = {'name': 'jason', ['education']: ['Tsinghua University', 'Stanford University']}
    

    使用列表list作为key,在dict是不允许的,因为list是个变化的值,dict中的key要求是不可变的,随着key的变化,会有重复的key,所以list不可以作为字典dict中的key。元组tuple是可以的。

    字符串

    python中使用 单引号('') 双引号("") 三引号(''' '''或""" """) 是相同的

    name = 'jason'
    city = 'beijing'
    text = "welcome to jike shijian"
    

    在字符串中,单引号可以内嵌带引号的字符串。比如:

    "I'm a student"
    

    三引号字符串,则主要应用于多行字符串的情境,比如函数的注释等等。

    def calculate_similarity(item1, item2):
        """
        Calculate similarity between two items
        Args:
            item1: 1st item
            item2: 2nd item
        Returns:
          similarity score between item1 and item2
        """
    

    字符串中,使用转义字符

    • \\ 表示\
    • \' 表示单引号'
    • \" 表示双引号"

    字符串常用操作
    同样支持索引切片遍历

    name = 'jason'
    name[0]
    'j'
    name[1:3]
    'as'
    for char in name:
        print(char)   
    j
    a
    s
    o
    n
    

    需要注意,Python中的字符串是不可变的,下面操作会报错

    s = 'hello'
    s[0] = 'H'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'str' object does not support item assignment
    

    改变,可以使用下面两种方式

    s = 'H' + s[1:]
    s = s.replace('h', 'H')
    
    • string.strip(),表示去掉首尾的 空字符
    • string.strip(str),表示去掉首尾的 str 字符串;
    • string.lstrip(str),表示只去掉开头的 str 字符串;
    • string.rstrip(str),表示只去掉尾部的 str 字符串。

    字符串的格式化

    'person id: {}, name: {}'.format(id, name)
    

    string.format() 就是所谓的格式化函数,大括号{}就是格式符为后面的真实变量预留位置

    相关文章

      网友评论

          本文标题:Python基础数据类型

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