返回顶部

Python 入门 之 Python基础数据类型及其常用方法

1、 int:整型及其常用方法

用于计算,用于比较 (在赋值的时候先执行等号右边的内容)

1.1 整数的加

a = 10
b = 20
print(a + b)
# 结果: 30

1.2 整数的减

a = 10
b = 20
print(b - a)
# 结果:10

1.3 整数的乘

a = 10
b = 20
print(a * b)
# 结果: 200

1.4 整数的除

a = 10
b = 20
print(b / a)
# 结果: 2.0
# 注意点:当我们使用Python3的时候我们除法获取到时浮点数,也就是小数,但是使用Python2的时候使用除法获取的就是整数(向下取整))

1.5 整数的整除(取整)

a = 10
b = 20
print(b // a)
# 结果: 2

1.6 整数的取余

a = 5
b = 2
print(a % b)
# 结果: 1

1.7 整数的次方(幂)

a = 5
b = 2
print(a ** b)
# 结果: 25
# 在32位机器上int的范围是: -2**31~2**31-1,即-2147483648~2147483647
# 在64位机器上int的范围是: -2**63~2**63-1,即-9223372036854775808~9223372036854775807

# 整型在Python2和Python3中的区别:
Python3:全部为整型
Python2:整型,长整型long 

1.8 10进制转2进制的转换

1.8.1 10进制转2进制:bin()函数

​ 方法:除2求余,从下往上写

print(bin(30))
1.8.2 2进制转10进制:int("11011101",2)函数

​ 方法:当前位置上的数乘以2的位数减1次方,并相加即可

print(int("111110",2))

2、bool:布尔型

true — 真 false — 假 :(用于判断)

print(3 > 2)            # 输出借结果为True
print(3 < 2)		# 输出结果为False

3、str:字符型及其常用方法

用于存储一些数据,存储少量数据。在Python中只要是用引号引起来就是字符串,字符串中的每一个字母或者字符都称为元素(字符串拼接:字符串+字符串 字符串翻倍:字符串*数字)

a = """absc"""
print(a)

3.1 字符串加法

# 字符串的拼接
s1 = 'a' 
s2 = 'bc'
print(s1 + s2)

3.2 字符串乘法(乘法的规则:只能是字符串和数字相乘)

str*int name = '小强'
print(name*8)

注:字符串中是不能进行减法和除法操作的

3.3 索引(下标):

<1> 从左向右排(正向索引从0开始)

<2> 从右向左排(反向索引从-1开始)

a = "hello_cai_sir,_you_are_ok"
print(a[5])
print(a[6])
print(a[11])
print(a[-2])
print(a[-1])

# 索引的时候不能超出索引最大值

3.4 切片:

[起始位置(包含):终止位置(不包含)] : 顾头不顾尾

[起始位置:] :从起始默认到最后

[:] : 默认从最开始到最后

切片的时候可以超出索引值

a = "hello_cai_sir,_you_are_ok"
print(a[11:100])
print(a[11:])    # [11(起始位置):(默认到最后)]
print(a[:])      # [(默认从最开始):(默认到最后)]

3.5 步长:

步长决定查找方向,以及查找时迈的步子

切片的时候步长默认为1

正数为正向索引(从左向右),负数为反向索引(从右向左)

在结束位置内:起始位置+步长得到下一字符元素

[::-1] :将字符串反向输出

a = "hello_cai_sir,_you_are_ok"
print(a[1:8:2]) 
print(a[1:8:4]) 

print(a[-8:-3:2])  
print(a[6:-5:1])
print(a[-5:-3:-1])

字符串是不可变数据类型,字符串是有序的

3.6 字符串的方法:

<1> upper() :全部大写
name = "maex"
a = name.upper()  # 全部大写
print(a)
print(name)
<2> lower() :全部小写
name = "MAEX"
a = name.lower()   # 全部小写
print(name)
print(a)
<3> startswith() :以什么开头
name = "maex"
print(name.startswith('e',2,3))  # 以什么开头 -- 返回的是布尔值
<4> endswith() :以什么结尾
name = "maex"
print(name.endswith('l',0,2))    # 以什么结尾 -- 返回的是布尔值
<5> count() :统计,计数
name = "maexwauistaaibbIa"
print(name.count("i"))         # 统计,计数
<6> strip() :脱(脱头尾两端的空格,换行符\n,制表符\t);去除头尾两端指定内容
pwd = " wsorlexsddbb   "
a = pwd.strip()   # 脱 默认脱(脱头尾两端的空格,换行符\n,制表符\t)
print(a)

pwd = "aliosxasddskfhsbal"
a = pwd.strip("al")  # 去除头尾两端指定的内容
print(a)
<7> split() :分割(默认空格,换行符\n,制表符\t);也可以以指定的元素分割。可以指定分割的次数
name = "all_women_shi_laoda"
a = name.split("_")        # 分割(默认空格,换行符\n,制表符\t)
print(a)                  
print(name.split("_",2))   # 可以指定分割的次数
<8> replace() :替换. replace(“要被替换的内容”,”替换为的内容”,替换次数)
name = "all,woemn,dou,shi,lao,ban,a"
a = name.replace(",",".")               # 全部替换
print(a)

a = name.replace(",",".",4)              # 可以指定替换的次数
print(a)

3.7 字符串格式化:

format() :按照位置顺序进行填充;按照索引填充;按照名字进行新填充
name = "{}今年:{}".format("cai",18)    # 按照位置顺序进行填充
print(name)

name = "{1}今年:{0}".format("cai",18)    # 按照索引进行填充
print(name)

name = "{name}今年:{age}".format(name="cai",age=18)    # 按照名字进行填充
print(name)

3.8 is 系列 是进行判断,返回的是布尔值

(1)isdigit() :判断字符串中的内容是不是全都是数字(阿拉伯数字)
msg = "123456"
print(msg.isdigit())      # 判断字符串中的内容是不是全都是数字(阿拉伯数字)
(2)isdecimal() :判断是不是十进制数
msg = "123456"
print(msg.isdecimal())    # 判断是不是十进制数
(3)isalnum() :判断是不是数字,字母,中文
msg = "123456abc"
print(msg.isalnum())      # 判断是不是数字,字母,中文
(4)isalpha() :判断是不是字母,中文
msg = "cai"
print(msg.isalpha())      # 判断是不是字母,中文

3.9 str 数据类型方法—补充:

<1> 字符串名.capitalize() :首字母大写
a = "yong liang"
print(a.capitalize())   # 首字母大写
<2> 字符串名.title() : 每个单词首字母大写
a = "yong liang"
print(a.title())        # 每个单词首字母大写
<3> 字符串名.swapcase() : 大小写调换
a = "yong liang"
print(a.swapcase())     # 大小写转换
<4> 字符串名.center() : 居中 填充
a = "yong liang"
print(a.center(20,"*"))     # 居中 - 填充
<5> 字符串名.find() : 查找 通过元素查找索引,查找不到时返回-1
a = "yong liang"
print(a.find("l"))        # 查找 通过元素查找索引,查找不到时返回-1
<6> 字符串名.index() : 查找 通过元素查找索引,查找不到时就报错
a = "yong liang"
print(a.index("l"))       # 查找 通过元素查找索引,查找不到时就报错
<7> "进行拼接的元素".join(["1","2","3"]) : 拼接 ,将列表转换成字符串 (int型无法直接进行拼接)
a = "yong liang"
print(a.join("_"))

lst = ["1","2","4"]
print("_".join(lst))  # 拼接,将列表转换成字符串
<8> str + str
name1 = "al"
name2 = "au"
print(id(name1))
print(id(name2))
print(id(name1 + name2))


# 字符串进行加操作都是开辟新的空间
<9> str * 数字
name1 = "al"
print(id(name1))
print(id(name1 * 5))

# 字符串进行乘操作都是开辟新的空间

4、list:列表及其常用方法

​ 列表是Python中的数据类型之一,能够存储大量的不同类型的数据。在别的语言中称为数组。32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值

列表 --- 容器
列表是一种有序的容器, 支持索引
列表是一种可变的数据类型   原地修改
列表中以逗号分割开的才是一个元素

4.1 定义一个列表: lst = [ ]

lst = [1,2,"cai",True,["钥匙","门禁卡",["银行卡"]]]
print(lst)

4.2 列表的索引

列表和字符串一样也拥有索引:

lst = ['刘德华','周润发','周杰伦','向华强']
print(lst[0])  # 列表中第一个元素
print(lst[1])  # 列表中第二个元素
print(lst[2])  # 列表中第三个元素
# 列表是可以进行修改的,这里和字符串不一样
# 列表的修改
lst[3] = '王健林'
print(lst)

# 字符串修改
s = '一一一'
s[0] = '李'
print(s)
# 结果会报错: TypeError: 'str' object does not support item assignment

4.3 列表的切片

lst = ["麻花藤", "王剑林", "马芸", "周鸿医", "向华强"] 
print(lst[0:3])     # ['麻花藤', '王剑林', '马芸'] 
print(lst[:3])      # ['麻花藤', '王剑林', '马芸']
print(lst[1::2])    # ['王剑林', '周鸿医']          ## 也有步长 
print(lst[2::-1])   # ['马芸', '王剑林', '麻花藤']  ## 也可以倒着取 
print(lst[-1:-3:-2])                              # 倒着带步长

4.4 列表的增加:

<1> append() :追加 在最末尾的地方进行添加 append(追加的内容)
lst = [1,2,3,4,3]
lst.append(13)        # 追加  在最末尾的地方进行添加
print(lst)
<2> insert() :插入 insert(插入的位置,“插入的内容”) 尽量减少使用,会使效率下降
lst = [1,2,3,4,3]
lst.insert(2,"ro")       # 插入
print(lst)
<3> extend() : 迭代添加 一个一个添加
lst = [1,2,3,4,3]
lst.extend([1,2,3,4])       # 迭代添加(一个一个添加)
print(lst)

4.5 列表的删除:

<1> remove() : 只能删除一个,从左向右删除。通过元素的名字进行删除
lst = [1,2,3,4,3]
list.remove(1)    
print(lst)
<2> pop() : 弹出 默认删除最后一个,并且具有返回值,返回值为弹出的那个。也可以加下标进行删除pop(3)
lst = [1,2,3,4,3]
print(repr(lst.pop(2)))    # repr()查看当前数据的原生态
print(lst)
<3> clear() :清空
lst = [1,2,3,4,3]
lst.clear()             # 清空
print(lst)
<4> del() :直接在内存空间中删除。可通过索引,切片,步长删除
lst = [1,2,3,4,3]
del lst[4]         # 通过索引删除
del lst[2:5]       # 通过切片删除
del lst[1:5:2]     # 通过步长删除
print(lst)

4.6 列表的修改:

<1> lst[2] = 80 :通过索引进行修改
lst = [1,2,3,4,5]
lst[2] = 80          # 通过索引进行修改
print(lst))
<2> Lst[1:3] = "skaj": 通过切片进行修改,必须是可迭代的对象。默认步长为1,修改的内容可多可少
lst = [1,2,3,4,5]
lst[1:3] = "20"  # 通过切片进行修改,默认步长为1,修改的内容必须是可迭代的对象,修改的内容可多可少
print(lst)       # [1, '2', '0', 4, 5]
<3> Lst[1:5:2] = "10" :通过步长进行修改,步长不为1的时候,必须一一对应
lst = [1,2,3,4,5]
lst[1:5:2] = 100,100    # 步长不为1的时候,必须一一对应print(lst)

4.7 列表的查找:

<1> 通过索引进行查找
<2> for循环
lst = [1,2,3,4,5]
    for i in lst:
        print(i)

4.8 列表的嵌套:

lst = [1,2,[3,4,5,["cai[]",True,[[1,2,]],90],"yong"],"y"]
lst1 = lst[2]   # [3, 4, 5, ['cai[]', True, [[1, 2]], 90], 'yong']
lst2 = lst1[3]  # ['cai[]', True, [[1, 2]], 90]
str_1 = lst2[0]
print(str_1[-1])
print(lst[2][3][0][-1])

# 一层一层的查找,[……]视为一个元素

4.9 list数据类型方法—补充:

<1> 列表的定义:list("123456")
<2> 列表的方法:

1> 列表名.index() : 通过元素查找索引

lst = [1,23,4,5,7,8,9]
print(lst.index(4))        # 通过元素查找索引

2> 列表名.reverse() : 反转

lst = [1,23,4,5,7,8,9]
lst.reverse()     
print(lst)

3> 列表名.sort() : 排序 默认是升序

lst = [1,23,4,5,7,8,9]
lst.sort()                  # 排序 默认是升序
print(lst)

4> 列表名.sort(reverse=True) : 降序

lst = [1,23,4,5,7,8,9]
lst.sort(reverse=True)     # 降序
print(lst)
lst = [1,[]] * 5
print(lst)       # [1, [], 1, [], 1, [], 1, [], 1, []]
lst[1].append(6)
print(lst)       # [1, [6], 1, [6], 1, [6], 1, [6], 1, [6]]

#  列表在进行乘法的时候,元素是共用的

5、tuple:元组及其常用方法

元组是Python中的数据类型之一,它是有序的,不可变的,只支持查询。(元组就是一个不可变的列表)

5.1 定义方式: tu = (1,2,3)

tu = (1,2,"cai",[1,3,4])
print(tu)

5.2元组的统计:

元组.count()

tu = (1,2,3,4,5,1,2,1)
print(tu.count(1))

5.3 元组的索引获取:

元组.index(4) :通过元素查询索引

tu = (1,2,3,4,5,1,2,1)
print(tu.index(2))        # 通过元素查询索引

5.4 元组的用途:

配置文件中使用

5.5 元组的嵌套:

tu = (1,2,3,4,(5,6,7,8,("yong","liang",[1,23,4])))
print(tu[4][4][0])
tu = (1)           # int
tu1 = ("cai")      # str
tu2 = (1,)         # tuple

5.6 tuple数据类型方法 — 补充:

<1> tu + tu

tu = (12,3,4) + (4,5,3,4)
print(tu)

<2> tu * 数字

tu = (1,[]) * 3
print(tu)
tu[-1].append(10)
print(tu)

# 元组在进行乘法的时候,元素是共用的

6、dict:字典及其常用方法

字典是Python的中的数据结构之一,是一种无序的,可变的数据类型,字典中的所有操作都是通过键。

6.1 定义: dic = {"key": "value"} --- 键值对

6.2 字典的作用:

存储大大量数据,将数据和数据起到关联作用

dic = {"10":"苹果手机",
       "11":"苹果手机",
       15:"小米手机",
       15:"华为手机",
       (1,):"oppo手机",
       }
print(dic)

# 键:必须是不可变的数据类型(可哈希),且唯一
# 值:任意,可变(不可哈希)

6.3 字典的增:

<1> 暴力添加:

dic["键"] = "值" //字典的添加,添加的是一个键值对

dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}
dic["小月"] = "吃"        # 字典的添加,添加的是一个键值对
dic["小妹"] = ["听歌","唱歌","吃","烤馕","大盘鸡","葡萄干"]
print(dic)
<2> dic.setdefault("键,["值1","值2"]

//有则不添加,无则添加:先查看键是否存在于字典,不存在的时候进行添加

dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}
dic.setdefault("小亮",["唱","跳","篮球","喝酒"])
print(dic)

6.4 字典的删除:

<1> pop() :

//pop删除通过字典中的键进行删除,返回的也是被删除的值

dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}
print(dic.pop("小明"))     #p op删除通过字典中的键进行删除 返回的也是被删除的值
print(dic)
<2> clear() : //清空
dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}
dic.clear()      # 清空
print(dic)
<3> del dic: //删除的是整个字典容器
dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}
del dic              # 删除的是整个容器
print(dic)
<4> del dic["键"] : //通过键进行删除
dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}
del dic["小健"]           # 通过键进行删除
print(dic)
字典中没有remove方法

6.5 字典的改:

<1> dic["键"] = "值" : //有则就覆盖,没有就添加
dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}

dic["小波"] = "最爱"       # 有则就覆盖,没有添加
print(dic)
<2> update(新字典) : //update函数后面的字典级别高于前面的字典
dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}

dic1 = {"小明":"上过北大","小亮":"干过前端"}
dic1.update(dic)
print(dic1)

6.6 字典的查:

<1> get("键") :

//查询不到时返回None get("键", "自己指定的内容") :当查询不到时返回自己指定的内容

dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}

print(dic.get("小亮"))            # 查询不到返回 None
print(dic.get("小亮","找不到啊"))  # 查找不到的时候返回 找不到啊
<2> setdefault("键") : // 查询不到时返回None
dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}
print(dic.setdefault("小亮"))    # 查询不到返回None
<3> dic["键"] : //查询不到就报错
dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}

print(dic["小亮"])       # 查询不到就报错了
<4> dic.keys() : //查看键 获取到的是一个高仿列表
dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}

for i in dic:     
    print(i)        # 查看所有的键

print(dic.keys())   # 获取到的是一个高仿列表
<5> dic.values() : //查看值, 获取到的是一个高仿列表
dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}

for i in dic:    
    print(dic.get(i))     # 查看所有的值

print(dic.values())       # 获取到的是一个高仿列表
# 高仿列表支持迭代,但不支持索引
for i in dic.values(): # 高仿列表支持迭代
    print(i)
<6> items() : //查看键值对
dic = {
       "小健":["看动漫","健身","吃包子","吃大煎饼","吃大烧饼"],
       "小飞":"飞机",
       "小工":"贴膏药",
       "小波":"宝剑",
       "小明":"吹牛逼"
}

for i in dic.items():
    print(i[0],i[1])

6.7 字典的嵌套:

字典嵌套查找的时候一定是按照一层一层进行查找

dic = {

    101:{1:{"地魔":"对象"},
         2:{"隔壁老王":"王炸"},
         3:{"乔碧萝":("地魔","炮手","小宝")},
         },
    102:{1:{"汪峰":{"国际章":["小苹果","大鸭梨"]}},
         2:{"邓紫棋":["泡沫","信仰","天堂","光年之外"]},
         3:{"腾格尔":["隐形的翅膀","卡路里","日不落"]}
         },
    103:{1:{"蔡坤":{"唱":["鸡你太美"],
                   "跳":["钢管舞"],
                   "rap":["大碗面"],
                   "篮球":("NBA形象大使")}},

         2:{"JJ":{"行走的CD":["江南","曹操","背对背拥抱","小酒窝","不潮不花钱"]}},
         3:{"Jay":{"周董":["菊花台","双节棍","霍元甲"]}}},

    201:{
        1:{"韦小宝":{"双儿":"刺客","建宁":{"公主":{"吴三桂":"熊"}},"龙儿":{"教主老婆":"教主"}}}
    }
}

print(dic[201][1]["韦小宝"]["建宁"]["公主"]["吴三桂"])
print(dic[103][1]["蔡徐坤"]["跳"][0][1])
print(dic[102][2]["邓紫棋"][1])

6.8 dict数据类型方法 — 补充:

<1> 字典名.popitem() :随机删除,并返回的是被删除的键值对 Python3.6版删除最后一个键值对
dic = {"key":1,"key1":2,"key2":4,"key3":1}
print(dic.popitem())   # 随机删除
print(dic)
<2> 字典名.fromkeys("abc",[]) : 批量创建键值对"a":[],"b":[],"c":[]
dic = {}
dic.fromkeys("abc",[])   # 批量创建键值对 
print(dic)
# fromkeys第一个参数必须是可迭代的对象,会将可迭代的对象进行迭代,成为字典的键。第二个参数是值(这个值是共用的)
# fromkeys共用的值是可变数据类型就会有坑,不可变数据类型就没事
dic = {}
dic = dic.fromkeys("abc",[])
print(dic)
dic["b"] = 11
dic["a"].append(10)
print(dic)           # {'a': [10], 'b': 11, 'c': [10]}

7、set:集合及其常用方法

集合是Python中的数据类型之一,是无序的,可变的且唯一。集合就是一个没有值的字典,集合天然去重。

# 用一行代码去重
lst = [1,223,1,1,2,31,231,22,12,3,14,12,3]
print(list(set(lst)))

7.1 定义一个空集合 : set1 = set{}

7.2 集合的增:

<1> 集合名.add()
s = set()
s.add("cai")
print(s)
<2> 集合名.update() : 迭代添加
s = set()
s.update("cai")  # 迭代添加
print(s)

7.3 集合的删:

<1 >集合名.remove() :通过元素删除
s = {100,0.1,0.5,1,2,23,5,4}
s.remove(4)                   # 通过元素删除
print(s)
<2> 集合名.clear() : 清空
s = {100,0.1,0.5,1,2,23,5,4}
s.clear()                      # 清空
print(s)
<3>集合名.pop() : 随即删除(一般情况下是最小的)
s = {100,0.1,0.5,1,2,23,5,4}
s.pop()                       # 随机删除 (一般是最小的)
print(s)

7.4 集合的改:

先删后加

s = {1,2,3,4,5}              # 先删后加
s.remove(2)
s.add(10)
print(s)                     # {1, 3, 4, 5, 10}

7.5 集合的查:

for循环

7.6 集合的其他操作:

(1)差集 -
s = {1,23,9,4,5,7}
s1 = {1,2,3,4,5}

print(s - s1)
print(s1 - s)
(2)交集 &
s = {1,23,9,4,5,7}
s1 = {1,2,3,4,5}

print(s & s1)
(3)并集 |
s = {1,23,9,4,5,7}
s1 = {1,2,3,4,5}

print(s | s1)
(4)反交集 ^
s = {1,23,9,4,5,7}
s1 = {1,2,3,4,5}

print(s ^ s1)
(5)子集 < : 返回的是一个布尔值
s = {1,23,9,4,5,7}
s1 = {1,2,3,4,5}

print(s < s1)
(6)父集(超级) > :
s = {1,23,9,4,5,7}
s1 = {1,2,3,4,5}

print(s1 > s)
(7)冻结集合 frozenset
s = {1,23,9,4,5,7}
s1 = {1,2,3,4,5}

dic = {frozenset({1,23,4,5}):123}
print(dic)
posted @ 2019-08-25 18:29  永亮  阅读(555)  评论(0编辑  收藏  举报