zoukankan      html  css  js  c++  java
  • Python第二天-基本数据类型

    整体介绍

    python有以下几种基本类型,int,float,str,range,slice,bool,list,tuple,dict,set

    详细介绍

    int

    int表示整型数字,不管多大的数字都可以用int表示,整合了java中的byte,short,int,long。

    将其他类型转换成int类型
    a = '123'
    b = int(a, base=10)
    

    可以将字符串,布尔值,字节数组转换成int值,第二个参数为进制,默认10进制,如果为非字符串,不能设置进制。类似java的Integer.parseInt方法。

    获取二进制长度
    a = 5
    print(a.bit_length())
    

    类似java的Integer.toBinaryString().length()

    运算符

    print(1 + 1)  # 加
    print(1 - 1)  # 减
    print(1 * 1)  # 乘
    print(1 / 1)  # 除 结果为 float
    print(1 // 1) # 整除 结果为 int
    print(1 % 1)  # 取余
    print(1 ** 1) # 次方 类似java的Math.power()
    

    float

    float表示浮点数

    price = 12.5
    print(type(price))
    print(float(12))
    print(float("12.45"))
    

    bool

    bool 表示布尔值,python中bool是继承int类型的,True表示1,False表示0

    print(bool(0))
    print(bool(1))
    print(bool(2))
    print(bool(""))
    print(bool(" "))
    print(bool("ad"))
    

    可以将int或str转换成bool类型,0或空字符串为false,其他都是True。

    str

    str表示字符串类型,字符串都是比可变的,每次操作都会创建一个新的字符串对象。

    各种方法

    print("this is".capitalize())  # Abc 首字符大写 其余小写 类似java中apache commons StringUtils.capitalize()
    print("ABC".center(7, "*"))  # **ABC** 左右填充数据 内容居中 填充内容只能是一个字符 类似java中StringUtils.center()
    print("AABBCC".count("ABC"))  # 子字符串包含的数量 类似java中StringUtils.countMatches()
    print("ABC".startswith("AB"))  # 是否以某前缀开始 类似java的String.startsWith()
    print("ABC".endswith("AB"))  # 是否以某后缀结束 类似java的String.endsWith()
    print("A	B	C".expandtabs(3))  # 将tab字符使用空格扩展,默认8个空格
    print("ABC".find("BC"))  # 找到的第一个索引 找不到为-1 类似java的String.indexOf()
    print("ABC".rfind("C"))  # 找到的最后一个索引 找不到为-1 类似java的String.lastIndexOf()
    print("ABC".index("A"))  # 找到的第一个索引 找不到抛出错误
    print("I am %s,age is %d" % ("lisi", 23))  # 格式化 根据名字 类似java的String.format()
    print("I am {name},age is {age}".format(age=23, name="lisi"))  # 格式化 根据名字 类似java的String.format()
    print("I am {0},age is {1}".format("lisi", 24))  # 格式化 根据索引
    print("I am {name},age is {age}".format_map({"name": "lisi", "age": 21}))  # 格式化 根据字典
    print("abc123".isalnum())  # 是否只包含字符和数字 不能包含特殊字符 空白字符 类似java中StringUtils.isAlphanumeric()
    print("abc".isalpha())  # 是否只包含字符 不能包含特殊字符 空白字符 数字 类似java中StringUtils.isAlpha()
    print("234".isdecimal())  # 是否只包含十进制数字
    print("234".isdigit())  # 是否只包含数字
    print("dict".isidentifier())  # 是否是python标识符
    print("abc".lower())  # 转换成小写  类似java中StringUtils.toLowerCase()
    print("abc".islower())  # 是否是小写字符串 类似java中StringUtils.isAllLowerCase()
    print("ABC".upper())  # 转换成大写 类似java中StringUtils.toUpperCase()
    print("ABC".isupper())  # 是否是大写字符串 类似java中StringUtils.isAllUpperCase()
    print("12.4".isnumeric())  # 是否只包含数字 类似java中StringUtils.isNumeric()
    print("abc".isprintable())  # 是否为可打印字符串 	 
     都是不可打印字符
    print(" 	".isspace())  # 是否为空白字符串 空格 制表符 换行符 类似java中StringUtils.isBlank()
    print("Abc".istitle())  # 是否每个单词为首字母大写 其余小写
    print("*".join(["a", "b", "c"]))  # 以某字符串分隔符合并成新的字符串 类似java的String.join()
    print("abc".ljust(5, "*"))  # 右边填充数据 类似java中StringUtils.leftPad()
    print("abc".rjust(5, "*"))  # 左边填充数据 类似java中StringUtils.rightPad()
    print(" abc abc ".lstrip().__len__())  # 去除左边空白字符 类似java中StringUtils.stripStart()
    print(" abc abc ".rstrip().__len__())  # 去除右边空白字符 类似java中StringUtils.stripEnd()
    print(str.maketrans("abc", "123"))  # 创建一个映射关系 dict类型
    print("a*b*c".partition("*"))  # 从左边开始 以一个分隔符分割成3部分
    print("a*b*c".rpartition("*"))  # 从右边开始 以一个分隔符分割成3部分
    print("aaa".replace("a", "A", 1))  # 字符替换 默认替换所有
    print("a*b*c".split("*", 1))  # 从前往后分割 分割出指定数量
    print("a*b*c".rsplit("*", 1))  # 从后往前分割 分割出指定数量
    print("a
    b
    c".splitlines())  # 按行分割
    print("Abc".swapcase())  # 大写转小写 小写转大写
    print("this is".title())  # 间将每个单词首字符大写 其余小写
    print("abc".translate(str.maketrans("abc", "123"))) # 将字符串根据映射关系转换成新字符串
    print("abc".zfill(5)) # 用0填充左边
    print(len("abc"))  # 字符串长度 类似java中String.length()
    print("a" in "abc") # 是否包含 类似java中String.contains()
    print("abc".encode(encoding="utf-8")) # 将字符串编码为字节数组 默认编码utf-8
    

    单引号 双引号 三引号

    print("i'am lisi")
    print('i"am lisi')
    abc = """
    hello 
     world
     lisi
    """
    print(abc)
    

    单引号和双引号都可以声明字符串,在单引号中包含双引号不需要转义,反之亦然。三引号(包括单引号和双引号)可以让字符串原样输出。

    迭代

    print("abc"[1])  # 根据索引获取子字符串
    print("abcdefghijklmnopqrst"[0:-1:3])  # 根据切片获取子字符串
    for x in "abcd":
        print(x)
    

    range

    range表示一个不可变的数字序列

    a = range(0, 10, 2)
    for i in a:
        print(i)
    print(a.index(2))
    print(a.count(2))
    

    创建一个range对象,包含3个属性
    start:开始位置,默认0,
    stop:结束位置,不包括结束
    step:步长,默认1
    range不会存储实际的数据,每次使用到才会计算,只会占用很少的内存,这也是对比list,tuple类型的优势。

    slice

    slice可以看做一个切片,表示字符串str,集合list,元组tuple的索引的不可变集合

    s = slice(0, 10, 2)
    print("abcdefghijklmn"[s])  # 字符串截取
    print("abcdefghijklmn"[0:10:2])  # 字符串截取
    print([1, 2, 3, 4, 5, 6, 7, 8, 9][s])  # list截取
    print((1, 2, 3, 4, 5, 6, 7, 8, 9)[s])  # tuple截取
    print(s.indices(5))  # 返回一个包含start,stop,step的tuple 参数比stop大,取之前的,小的话取参数
    

    创建一个slice也是需要start,stop,step3个参数

    list

    list表示一个可变的列表,类似java中的List。可以存放任意类型的元素。

    names = ["lisi", "wangwu", 12, 24, ["a", "b"]]
    li = list("abcd")
    names.append("c")  # 追加元素
    names.insert(-1, "d")  # 指定索引元素之前插入元素
    names[-1] = "e"  # 指定索引元素修改
    del names[-1]  # 指定索引元素删除
    names[0:2] = ["x", "y"]  # 指定切片元素修改
    del names[0:2]  # 指定切片元素删除
    print(names, li)
    print(names.count(12))  # 统计元素数量
    print(names.index(12))  # 查找元素索引 找不到抛出错误
    print(names.pop())  # 删除最后一个元素并返回
    names.remove(12)  # 删除元素
    print(names.copy())  # 列表拷贝 返回一个新的列表
    names.reverse()  # 列表数据翻转
    names.clear()  # 清空
    names = [23, 12, 56]
    names.sort(key=lambda x: x, reverse=True)  # 列表排序 key指定排序字段,reverse表示是否翻转
    names.extend(["d", "e"])  # 批量追加元素
    print("d" in names) # 元素是否在列表中
    print(names)
    

    tuple

    tuple在python中称做元组,表示一个不可变的列表,内容包括添加,修改,删除,类似java中的ImmutableList。

    tu = (2)  # 不加,表示int
    print(type(tu))  # int 类型
    tu = (2,)  # 定义元组
    print(type(tu))  # tuple类型 
    tu = tuple([1, 2, 3])  # 根据迭代器对象创建元组
    print(type(tu))
    print(tu.count(1))  # 元素数量
    print(tu.index(1))  # 元素索引
    

    dict

    dict表示一个字典,键值对的集合,类似java中的Map。

    person = {
        "name": "lisi",
        3: 5,
        True: True,
        (1, 2,): [1, 2],
    }  # 定义字典
    person["age"] = 34  # 添加或修改键值对
    del person["age"]  # 删除键值对
    print("name" in person)  # key是否存在
    person["age"] = 4
    print(person.get("age"))  # 获取key对应的值 key不存在返回None
    print(person["age"])  # 获取key对应的值 key不存在报错
    print(person.pop("age"))  # 删除key并返回value
    print(person.popitem())  # 按后进先出的顺序删除一个键值对 字典为空,报错
    print(person.copy())  # 字典拷贝
    print(person.update({"name": "li"}))  # 将新字典的值更新到原字典中
    print(person)
    for key in person.keys():  # 遍历key
        print(key)
    for val in person.values():  # 遍历value
        print(val)
    for key, val in person.items():  # 遍历key,value
        print(key, val)
    person.clear()  # 字典清空
    print(person)
    

    set

    set表示无序的不重复的集合,只能存储不可变类型,如int,float,str,tuple

    name_set = {"lisi", "Tom", "Mary", "xioaming"}  # 定义集合
    age_set = set([4, 6, 8, 2])  # 定义集合
    print(name_set)
    name_set.add("xioali")  # 添加元素
    print(name_set)
    print(name_set.copy())  # 集合复制
    print(name_set.difference({"lisi", "Tom"}))  # 集合求差集
    name_set.difference_update({"lisi", "Tom"})  # s1=s1.difference(s2) 集合求差集并更新原集合
    print(name_set)
    name_set.discard("lisi")
    print(name_set)
    print(name_set.intersection({"Mary"}))  # 集合求交集
    name_set.intersection_update({"Mary"})  # 集合求交集并更新原集合
    print(name_set.isdisjoint({"Mary"}))  # 是否没有交集
    print(name_set.issubset({"Mary"}))  # 是否为子集
    print(name_set.issuperset({"Mary"}))  # 是否为父集
    print(name_set.pop())  # 随机删除并返回
    name_set.add("Mary")
    name_set.remove("Mary")  # 删除元素 不存在抛出错误
    print(name_set.symmetric_difference({"Mary"}))  # 集合求交叉补集
    name_set.symmetric_difference_update({"Mary"})  # 集合求交叉补集并更新原集合
    print(name_set.union({"Mary"}))  # 集合求并集
    name_set.update({"Mary"})  # 集合求并集并更新原集合
    print(name_set)
    name_set.clear()  # 集合清空
    print(name_set)
    age_set = frozenset([1, 2, 3, 4, 4]) # 定义不可变集合
    print(age_set)
    
  • 相关阅读:
    java实现立方和等式
    java实现立方和等式
    java实现立方和等式
    java实现立方和等式
    java实现立方和等式
    java实现拉丁方块填数字
    java实现拉丁方块填数字
    java实现拉丁方块填数字
    java实现拉丁方块填数字
    IDHTTP用法详解 good
  • 原文地址:https://www.cnblogs.com/strongmore/p/13499096.html
Copyright © 2011-2022 走看看