python入门基础01——数据类型

python入门基础01——数据类型,第1张

python入门基础01——数据类型

文章目录

python3.x基础数据类型

输入输出基本数据类型重要数据结构

列表元组字典bytes字节Set集合

python3.x基础数据类型

anaconda3搭建自寻

anaconda3启动jupyter

jupyter notebook --ip=0.0.0.0 --port=8080 --allow-root --no-browser
输入输出
# 输出传参
name = 'xiao'
age =22
print("我的名字为%s,年龄为%d"%(name,age))

# 键盘输入
# input返回时字符串
name  = input('enter your name:')
print("我的名字是%s"%(name))
# 如若输出为%d,则会出错
基本数据类型

命名规范只能是字母、数字和下划线,且不能以数字开头

数字类型

整型、浮点型、复数

a = 1
print(id(a))
a = 2
print(id(a))

140058553432368
140058553432400
# 两次的结果是不一样的,表示内存地址位置不同,开辟了新空间


score =99
print(type(score))
num= float(score)
print(num)


99.0
# 类型转换,查看类型

布尔类型

# True真--->1
# False假--->0
a = True + True + False + True
a

3
# 结果为3,可以相加减

字符串类型

# 双引号、单引号都是字符串
字符串类型属于序列的类型

str = 'xiao youpei'
print(str[5:11])
print(str[0:-7])

youpei
xiao
# 切片,含头不含尾


str = 'xiao youpei'
print('i' in str)

True
# 检查是否包含某一元素


s1 = 'xiao'
s2 = 'youpei'
s = s1+s2
print(f'我的名字是{s}')

我的名字是xiaoyoupei
#支持拼接


s1 = 'xiao'
s = s1 * 5
print(f'我的名字是{s}')

我的名字是xiaoxiaoxiaoxiaoxiao
# 字符串重叠的 *** 作


str = 'xiaonyoupei'
print(str)
str = r'xiaonyoupei'
print(str)

xiao
youpei
xiaonyoupei
# 加r,让转义字符失效

s = 'xiao yan'
# 替换字符串中的字符
s1 = s.replace('yan','youpei')

# title(),首字母大写

重要数据结构 列表
alist=[1,'a',[11,22],{'k1':'v1'}]
在内存空间中,列表各元素地址并不连续,
但是会有一个连续的地址指向每一个元素的地址,
这里理解成一个索引文件,一个真实文件,这样的两重效果,
如下图

列表是一个序列的结构
由于上面的特性,所以是可被修改,直接替换下标位置值就行

# 删除元素
注意,remove()和pop()、del都可以删除列表中的元素,
不同的是
del:指定下标元素删除,永久删除(原列表改变)
pop():指定下标元素取出,默认是最后一位,永久取出(原列表改变)
remove():指定元素删除(删除第一个出现的),永久删除(原列表改变)

list = [1,2,3,4,5,6,1,12,3,4,5,6]
print(list)
del list[0]
print(list)
list.pop()
print(list)
list.pop(0)
print(list)
list.remove(5)
print(list)

[1, 2, 3, 4, 5, 6, 1, 12, 3, 4, 5, 6]
[2, 3, 4, 5, 6, 1, 12, 3, 4, 5, 6]
[2, 3, 4, 5, 6, 1, 12, 3, 4, 5]
[3, 4, 5, 6, 1, 12, 3, 4, 5]
[3, 4, 6, 1, 12, 3, 4, 5]


# 增加
append():追加元素到列表末尾
insert():插入指定下标位置
    
list = [1,2,3,4,5]
print(list)
list.append(6)
print(list)
list.insert(2,111)
print(list)

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 111, 3, 4, 5, 6]

# 排序
sort():永久排序,改变原列表,字母排序
sorted():暂时排序,不改变原列表,返回一个新的列表
    
list = [2,7,1,9,3,4]
print(list)
print(sorted(list))
print(list)
print(list.sort())
print(list)

[2, 7, 1, 9, 3, 4]
[1, 2, 3, 4, 7, 9]
[2, 7, 1, 9, 3, 4]
None
[1, 2, 3, 4, 7, 9]
# 字符串列表互转
字符串--->列表:直接split切分后就是一个列表
列表--->字符串:利用' '.join(list),空格将列表元素拼接成

str = 'xiao youpei'
list1 = str.split(" ")
print(list1)
str1 = ' '.join(list1)
print(str1)

['xiao', 'youpei']
xiao youpei

# extend()是将另外一个列表元素拼接到现有列表后
# 如果直接用append是将整个列表作为元素追加到现有列表了

# reverse()是将列表反转

# 复制列表,新列表开辟一个新的内存空间
# 浅拷贝,只拷贝列表的第一层 copy()
list1 = [1,2,3,4,[1,2,3,4],6]
list2 = list1.copy()
list2[4][0] = "xxx"
print(list1)

# 出现这种情况的原因就是列表的内存地址性质,可看列表的开始
[1, 2, 3, 4, ['xxx', 2, 3, 4], 6]

# 深拷贝,拷贝列表的两层 deepcopy()
import copy
list1 = [1,2,3,4,[1,2,3,4],6]
list2 = copy.deepcopy(list1)
list2[4][0] = "xxx"
print(list1)
print(list2)

[1, 2, 3, 4, [1, 2, 3, 4], 6]
[1, 2, 3, 4, ['xxx', 2, 3, 4], 6]

元组
tuple:不可变的序列结构,相当于不可变的列表
# 元组只有一个元素如何定义
t=(1) 这样的定义不是元组,而是int 
t=(1,) 元组只有一个元素,为1

其他的用法类似于列表


t = (1,2,[3,4,5],6)
t[2][1] = 111
print(t)
# 元组中存放可变类型可以修改其值
(1, 2, [3, 111, 5], 6)

字典

基于hash散列算法实现,采用键值对的形式,根据key值计算value的值,具有非常快速的查取和插入的速度

3.6版本后,字典是有序的,这个顺序指的是元素插入时的先入顺序

dic ={
    'name':'xiao youpei',
    'age':22,
    'score':[99.99]
}
dic

{'name': 'xiao youpei', 'age': 22, 'score': [99.99]}

# key值必须是不可变的类型,value值可变喝不可变都可以
# 字典不是序列的结构,因而没有下标和切片的机制
dic ={
    'name':'xiao youpei',
    'age':22,
    'score':[100,98,97],
    'address':{'original_xiao':'tianchang','now_xiao':'nanjing'}
}
print(dic['address']) # 通过[]取值,不存在会报错
print(dic.get('name'))# 通过get key,不存在为None
dic['money']=10000 # 不存在就增加,存在就修改
print(dic)

{'original_xiao': 'tianchang', 'now_xiao': 'nanjing'}
xiao youpei
{'name': 'xiao youpei', 'age': 22, 'score': [100, 98, 97], 'address': {'original_xiao': 'tianchang', 'now_xiao': 'nanjing'}, 'money': 10000}

# 删除
del dic['age']
# 清空字典
dic.clear()

# items列表格式返回字典的键值对
print(dic.items())

dict_items([('name', 'xiao youpei'), ('age', 22), ('score', [100, 98, 97]), ('address', {'original_xiao': 'tianchang', 'now_xiao': 'nanjing'}), ('money', 10000)])

# 返回所有key、value
print(dic.keys())
print(dic.values())
dict_keys(['name', 'age', 'score', 'address', 'money'])
dict_values(['xiao youpei', 22, [100, 98, 97], {'original_xiao': 'tianchang', 'now_xiao': 'nanjing'}, 10000])

# 取出字典某个元素,永久改变
result = dic.pop('age')
print(result)

22

bytes字节

一般运用于网络编程、爬虫

bs = b'xiao youpei'
print(type(bs))




# 字符串和和bytes类型相互转换,默认utf-8
#bytes--->字符串str
str = bs.decode()
#字符串str--->bytes
bs1 = str.encode()
Set集合

无序不重复,没有下标的机制

# 添加元素 add
s = {1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8}
print(type(s))
print(s)
s.add(10)
print(s)


{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8, 10}

# 另外一个对象更新到已有集合 update
set1 = {1,1,2,2,3,3}
set2 = [2,2,3,3,4,4]
set1.update(set2)
print(set1)

{1, 2, 3, 4}

# 删除元素采用 remove、pop(pop方法无法设置下标参数)

# 综上,集合不支持下标也不支持字典通过键获取值

总结:

可变类型:列表、字典、set集合

不可变类型:数字、布尔、字符串、元组、bytes

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5701009.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存