Python-数据类型

主要数据类型

数字类型:int、long、float

字符串类型str

布尔bool

列表list、元组tuple

字典dict

集合set

字节bytes

查看数据类型

tpye(data)

数字类型

int(整型)

64位的机器上,整数的位数为64位。取值范围在,即 -9223372036854775808 ~ 923372036854775807

long(长整型)

理论上可以无限大,但是由于机器内存有限,所以也不可能无限大。

自从python3开始,就没有long了,全都是int型。

fload(浮点型)

浮点数即小数。

字符串Str

只要加了引号的字符都被认为是字符串。

字符串特性

  • 不可修改
  • 有索引,可切片

 不可修改是指,变量值不是在原有内存中修改。而是新建了内存空间,将变量名指向新的内存空间。

 有索引可切片,切片的区间是左闭右开。 

string[start:stop:step]。其中step步长可以为负数,当为负数时,可以实现反过来取值。(step的符号要和取值顺去对应,否则取值为空)

多行字符串

使用''' 三个单引号,赋值多行字符串

\n表示换行符

 字符串拼接

字符串内引用外部变量

  • %s,%d,%f 占位符-格式化输出
  • f
格式符号        转换
%%输出%号
%s字符串
%d有符号的十进制整数
%f浮点数,%.2f表示保留2位小数
%c字符
%u无符号的十进制整数
%o八进制整数
%x十六进制整数(小写字母0x)
%X十六进制整数(大写字母0X)
%e科学计数法(小写e)
%E科学计数法(大写E)
%g%f和%e的简写
%G%f和%E的简写

 python3中可以使用 xxx = f"xxx{v_name}"的格式,引用变量

布尔类型

bool类型就两个值,一个true,一个false。主要作用是作为程序中的逻辑判断。

列表list

格式: list_name = ["value1","value2"...]

取值:list_name[index]

常用操作

增 list_name.append("xxx")

插入 list_name.insert(index,"xxx")

改 list_name[index] = "xxx"

查 name.index("xxx") 查询值所在的索引位置

查询list长度 len(list_name)

删 list_name.pop(index);del list_name[index] ; list_name.remove("xxx")

切片

切片步长

 

 嵌套

排序和反转

import random

list1 = []
for i in range(8):
    list1.append(random.randint(1,20))
print(list1)
#排序sort
list1.sort()
print(list1)
#翻转sort的reverse参数 True降序,False或者没有升序
list1.sort(reverse=True)
print(list1)
#翻转reverse
list1.reverse()
print(list1)

元组tuple

特点:元组和列表是类似的,但是不同之处是,元组的元素是不能修改的(虽然不能修改元组,但是可以将两个元组通过+号进行连接)。元组使用小括号()表示。这里所说的修改,包括了增、删、改。

注意:如果元组里只有一个元素时,一定要以逗号结束,不然不是表示元组。元组同样支持下标和切片。

元组可以以逗号或小括号表示

t1 = 1,2,3
t2 = (1,2,3)
print(t1)
print(t2)

--------------
输出:
(1, 2, 3)
(1, 2, 3)

列表和元组,可以使用list()、tuple()转换格式

# 元组tuple
t1 = ()
print('t1', type(t1))
t2 = ('77',)
print('t2', type(t2))
t3 = ('xx', 'yy', 'zz')
l1 = list(t3)
print(l1)
t3 = tuple(l1)
print(t3)

-----------------
输出:
t1 <class 'tuple'>
t2 <class 'tuple'>
['xx', 'yy', 'zz']
('xx', 'yy', 'zz')

元组的拆包和装包

拆包

在python中,元组的拆包是自动的,不需要任何函数。拆包就是将元组中的元素,赋值给多个变量。一般情况下,接受赋值的变量个数要等于元组中的元素个数。

t1 = (1, 2, 3,)
a, b, c = t1
print(a, b, c)

--------------
输出:
1 2 3

当元素个数多余或少于接受赋值的变量个数时,python会给出明确的报错:

元素个数 > 接受赋值的变量:ValueError: too many values to unpack

元素个数 < 接受赋值的变量:ValueError: not enough values to unpack

如何在“变量个数 < 元素个数时接受赋值:

使用*arg 接收多个元组中的元素。

t1 = (1, 2, 3, 4, 5, 6, 7, 8)
a, *b, c = t1
print(a, b, c)


----------------
输出:
1 [2, 3, 4, 5, 6, 7] 8

同理*arg也可以用于“变量个数 > 元素个数”时接受赋值,此时*arg 会接受空列表

t2 = (90,)
a, *b = t2
print(a, b)

-----------
输出:
90 []

不光是元组可以拆包,字符串和列表也同样适用

s1 = 'xsdsadsadads'
a, *b, c = s1
print(a, b, c)

l1 = ['2', 'x', 'a', 'bv', 'll']
a, *b, c = l1
print(a, b, c)

---------------------
输出:
x ['s', 'd', 's', 'a', 'd', 's', 'a', 'd', 'a', 'd'] s
2 ['x', 'a', 'bv'] ll

容易绕晕的点:什么时候是拆包,什么时候是装包

t1 = (1, 2, 3, 4, 5, 6, 7, 8)
a, *b, c = t1      #拆包1
print(a, b, c)
print(*b)          #拆包2

---------
输出:
1 [2, 3, 4, 5, 6, 7] 8
2 3 4 5 6 7

拆包1:

a, *b, c = t1 ,此时元组t1被拆包,赋值给变量。

a = 1;c = 8; *b = 2,3,4,5,6,7。*b赋值时,为装包。

拆包2:print(*b)

所以:*arg。赋值时为装包,打印时是拆包。

字典-dictionary 

python中使用dictionary-字典,存储key-value。在其它语言中也称为map。

特点:

  • 符号:{}
  • 关键字:dict
  • 保存的元素是key: value
  • 字典中的键是不可以修改的,只可以修改值。键只可以删除
  • 字典中的key的顺序不是根据添加的先后顺序排序的

必须符合固定格式的列表或元组,才可以转字典。

格式:list1 = [(key1,value1),(key2,value2)]   元组和字典都必须满足这样的格式。

dict1 = {}
print(type(dict1))

list1 = [("key1", "value1"), ("key2", "value2")]
dict2 = dict(list1)
print(dict2)

-----------------
输出:
<class 'dict'>
{'key1': 'value1', 'key2': 'value2'}

字典的增、删、改、查

添加&修改元素

格式:dict_name[key] = value

注意:key是唯一的,所以在添加的时候如果出现同名的key,则新的value会替换之前的value

dict1 = {}
dict1['name'] = 'liqi'
dict1['age'] = 27
print(dict1)
#修改元素
dict1['age'] = 18
print(dict1)

--------------
输出:
{'name': 'liqi', 'age': 27}
{'name': 'liqi', 'age': 18}

dict_name.setdefault('key','value')        #设置默认值,只可以添加的时候使用,无法修改。

dict_name1.update('dict_name2')        #实现两个字典的合并

删除

dict_name.clear            #清空

dict_name.pop('key')    #删除key

dict_name.popitem()    #删除最后一个键值对,返回值是键值对的元组

del dict_name['key'] or del dict_name    #删除key或者删除整个字典

dict1 = {'name': 'liqi', 'age': 27, 'hobby': 'basketball'}
print(dict1)
r = dict1.pop('age')
print(r, dict1)
dict1.clear()
print(dict1)

---------------
输出:
{'name': 'liqi', 'age': 27, 'hobby': 'basketball'}
27 {'name': 'liqi', 'hobby': 'basketball'}
{}

查询

对字典的查询,都是根据键去查询值。

dict_name.get('key',[默认值])

dict_name['key']        #如果key不存在会报错

dict1 = {'name': 'liqi', 'age': 27, 'hobby': 'basketball'}
value1 = dict1.get('name')
value2 = dict1['name']
print(value1, value2)
# get默认值
value3 = dict1.get('xxx', 'not found')
print(value3)

-------------
输出:
liqi liqi
not found

遍历

如果直接遍历字典,取出的是字典的key

dict1 = {'name': 'liqi', 'age': 27, 'hobby': 'basketball'}
for i in dict1:
    print(i)

--------------
输出:
name
age
hobby

如果要直接输出字典中的值,可以调用dict_name.values()

dict_name.keys()        #拿到所有的key

dict_name.values()     #拿到所有的value

dict_name.items()       #拿到键值对,格式:[('key1','value1'),('key2','value2'),('key3','value3')]

values = dict1.values()
print(values)
for v in dict1.values():
    print(v)

------------
输出:
dict_values(['liqi', 27, 'basketball'])
liqi
27
basketball
dict1 = {'name': 'liqi', 'age': 27, 'hobby': 'basketball'}
for k, v in dict1.items():  #拆包
    print(k, v)

-----
输出:
name liqi
age 27
hobby basketball

集合-set

关键字:set;符号:{}

特点:

  • 没有重复,且无序
  • 和字典相比,集合没有value。元素不是成对出现的

可以通过在{}内放入非成对的值定义集合,也可以将list列表转换成集合

对于申明空的set只能用 set1 = set()

set1 = {''}
set2 = {'1', '2', '3'}
set3 = set([1, 2, 3, 4])
print(type(set1))
print(type(set2))
print(type(set3))

-----------
输出:
<class 'set'>
<class 'set'>
<class 'set'>

将一个有重复值的列表转换成集合,可以看出来,集合中的值是没有重复的。

set_name.add(key)    #向集合中添加元素,虽然元素是最后添加的,但是没有排在最后。可以看出来集合是无序的。

set_name1.update(set_name2)    #将set_name2合并到set_name1中(set_name2本身不变)

set1 = set([1, 1, 1, 2, 2, 3, 3, 4, 8, 9])
print(set1)
set1.add(6)
print(set1)

set2 = {'x', 'a', 'w'}
set1.update(set2)
print(set1)
print(set2)

-------------
输出:
{1, 2, 3, 4, 8, 9}
{1, 2, 3, 4, 6, 8, 9}
{1, 2, 3, 4, 6, 8, 9, 'w', 'a', 'x'}
{'a', 'w', 'x'}

set_name.remove('key')    #删除集合中的key,如果key不存在会报错

set_name.discard('key')    #删除集合中的key,如果key不存在不会报错

set1 = set([1, 1, 1, 2, 2, 3, 3, 4, 8, 9])
print(set1)
set1.remove(9)
print(set1)

------
输出:
{1, 2, 3, 4, 8, 9}
{1, 2, 3, 4, 8}

set可以看作为数学意义上的无重复、无序的集合。因此,两个集合可以做数学意义上的交集和并集

set1 = set([1, 2, 3])
set2 = set([2, 3, 4])
set3 = set1 & set2    #交集
set4 = set1 | set2    #并集
print(set3)
print(set4)

-----------
输出:
{2, 3}
{1, 2, 3, 4}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值