当前位置: 首页 > news >正文

1、python全栈之路-数据类型

一、数据类型

数据类型,相同类的值(指定类的对象)具有相同的功能,功能保存在类中(只有一份)

1、整数(int类)

   1,2,3,4.......99....

bit_length()

当前十进制用二进制表示时,最少使用的位数

 

v = 15
# 当前十进制用二进制表示时,最少使用的位数
data = v.bit_length()
print(v)
print(data)

 

2、布尔型(bool类)

True 1

False 0

布尔值为False的情况:False : 0,None,'',{},[],()

3、字符串(str类)

字符串调用函数时,字符串本身原值不变

3.1 字符串提供的功能

3.1.1 upper()

变大写

 

3.1.2 lower()

变小写

 

3.1.3 capitalize()

首字母变大写,其他变小写

 

3.1.4 strip()

去除首尾空格、换行、制表符、制定的内容

 

示例:

 

3.1.5 lstrip()

去除左边空格

 

3.1.6 rstrip()

去除右边空格

 

3.1.7 replace()

替换

 

 

 

3.1.8 split()

分割

 

3.1.9 isdecimal()

判断当前字符串中是否全部都是数字

 

示例:

count = 0
v = "abc123fsdfa3f"
for item in v:
    if item.isdecimal():
        count += 1
print(count)

 

 

3.1.10 join()

连接列表的元素

 

3.1.11 endswith()startswith()

print(name.endswith('SB'))#判断是否以'SB'结尾
print(name.startswith('alex'))#判断是否以'alex'开头

 

3.1.12 encode('utf-8gbk')

把字符串转化成字节

 

3.1.13 find()index()

find()

在字符串中查找,找不到返回-1

 

 

index()

在字符串中查找,找不到报错

 

3.1.14 format()

格式化字符串

(1)

 

(2)

 

(3)

 

(4)

 

3.1.15 casefole()

字符串变小写,包含小语种,lower()只能改变英文

 

3.1.16 center(),ljust(),rjust()

center():两边补字符

ljust():右边补字符

rjust():左边补字符

 

3.1.17 count()

计算个数

 

3.1.18 expandtabs()

可以联合换行符制表符使用,固定字符间隔长度

 

# \n ,换行符
# \t,制表符,相当于Tab缩进

3.1.19 index()

列表字符的索引

 

3.1.20 isdigit()

判断字符串的内容是否是纯数字

 

3.1.21 isalpha()

判断字符串的内容是否是纯字母

 

3.1.22 isspace()

 

3.2 公共功能

3.2.1 len()

计算当前字符串长度

 

 

3.2.2 索引、下标

#      -  单个值:v[0]

#      -  多个值:v[起始位置:结束位置]

#      -  多个值:v[起始位置:结束位置:步长]

#      PS: -1表示最后

 

示例:

# 题: 列出v = "ASCII第一次以规范标准的型态发"
# v = "ASCII第一次以规范标准的型态发"
# length = len(v)
# index = 0
# while True:
#     data = v[index]
#     print(data)
#     index += 1
#     if index == length:
#         break

v = "ASCII第一次以规范标准的型态发"
length = len(v)
index = 0
while index < length:
    data = v[index]
    print(data)
    index += 1

 

 

3.2.3 循环 

 

4int-bool-str转换

int    89  90

bool   True False

str  'sdf' '7'

4.1 str-->int

示例:

#加法计算器
v1 = input("请输入第一个值:") # "54"
v2 = input("请输入第二个值:")
v3 = int(v1) + int(v2)
print(v3)

 

4.2 str-->bool

空值字符串--False

其他--True

 

4.3 int-->str

str(int)

 

4.4 int-->bool

0--False

其他--True

 

4.5 bool-->str

str(bool)

4.6 bool-->int

True--1

False--0

 

4.7 示例

# 面试题
a = False or 2 > 3
print(a)
#有具体数字或者字符串时,输出数字或字符串
a = 9 or 2 > 3
print(a)
a = "asdf" or 2 > 3
print(a)

5、列表(list类)

可变的容器,本身是变化的

5.1 list类中提供的功能

5.1.1 append()

在列表尾部追加一个值[修改本身值]

 

示例:

v = []
while True:
    name = input("请输入用户名:")
    if name.lower() == 'q':
        break
    v.append(name)
    print(v)

 

5.1.2 insert()

在指定位置插入数据

v = [11,22,33,44,"蒋毅"]
v.insert(4,"孙骑兵")#4是下标
print(v)

 

5.1.3 reverse()

v = [11,22,33,44]
print(v)
v.reverse()
print(v)

 

5.1.4 remove()delpop()

删除

 

pop()不指定位置默认删除最后一个,返回删除元素的值

 

5.1.5 index()

找参数的位置

 

5.1.6 clear()

清空列表

 

5.1.7 sort()

排序

ASCII码排序

 

5.1.8 extend()

合并

 

5.1.9 copy()

复制、浅拷贝

 

有一个特性:浅copy,copy第一层

现在的需求是要输出的names2与第一行names定义的相同

name1 = ["zhangyang","guyun","xiangpeng","xulang"]
name2 = name1.copy()
name1[1] = "古云"
print(name1)
print(name2)

 

name1 = ["zhangyang","guyun","xiangpeng",["jack","alex"],"xulang"]
name2 = name1.copy()
name1[1] = "古云"
name1[3][0] = "杰克"
print(name1)
print(name2)

 

列表的特性

 

与字符串或数字不同

 

深拷贝

import copy
name1 = ["zhangyang","guyun","xiangpeng",["jack","alex"],"xulang"]
name2 = copy.deepcopy(name1)
name1[1] = "古云"
name1[3][0] = "杰克"
print(name1)
print(name2)

 

简述深浅拷贝

#如果拷贝单层列表时,深浅拷贝都把原列表拷贝到了一个新的内存地址,所以原列表被修改新列表都不会被修改

#如果拷贝多层列表时

    #浅拷贝只将原列表的第一层拷贝到了新的内存地址,新列表二层及以内的依然指向原列表的内存地址,所以原列表被修改,新列表的

    #第一层不会改变,二层及以内的会跟着新列表修改

    #深拷贝是将原列表的所有都拷贝到了新的内存地址,原列表被修改,新列表不会改变

5.2 公共功能

5.2.1 len()

计算列表长度

 

5.2.2 索引

 

5.2.3 循环

for

 

5.2.4 替换

 

5.2.5 删除

del

 

5.2.6 嵌套

列表中的元素可以是:数字,字符串,布尔值,列表

li = [11,22,[6,"88991",7],33,True,"蒋毅",55]
val = li[2][1][-1]
print(val)

li[3] = 66
print(li)

li[2][2] = 77
print(li)

li[2][1] = 666
print(li)

li[5] = li[5].replace('蒋','江')
li[5] = "江毅"
print(li)

 

5.3 删除补充

删除列表元素时,会影响列表长度,从而使得索引取值时,容易出现错误。

 

解决方法:

# 解决方案一:
li = [11, 22, 33, 44, 66] # 0
new_list = []
# 索引为奇数值,删除
for i in range(0,len(li)):
    if i%2 == 0:
        new_list.append(li[i])
li = new_list
print(li)

 

# 解决方案二:
li = [11, 22, 33, 44, 66] # 0
# 索引为奇数值,删除
#倒序删除rang(4,-1,-1)
for i in range(len(li)-1,-1,-1): # 4,0
    if i%2 == 1:
        del li[i]
print(li)

 

# 解决方案三:
#切片+步长
li = [11, 22, 33, 44, 66]
#del li[0:4]
del li[0:4:2]
print(li)

 

6、元组(tuple类)

不可变的容器

只有一个元素时,一定加逗号(1,)

6.1 公共功能

6.1.1 len()

 

6.1.2 索引

 

6.1.3 循环

for

 

6.1.4 嵌套

v = (11,22,[11,22,33],33,(9,1,2,"alex"),44)#儿子不可变,孙子可能可变
v[2][1] = "xxxxx"
print(v)
v[2].append("asdasd")
print(v)

 

7、字典(dict类)

7.1 dict类中提供的功能

7.1.1 get()

根据key获取对应的值,key不存在默认取None

 

7.1.2 keys()

 

7.1.3 values()

 

7.1.4 items()

 

7.1.5 update()

合并两个字典,如果有重复键则合并值,没有重复的键则添加值

 

7.2 公共功能

7.2.1 len()

 

7.2.2 获取

 

7.2.3 设置

# key存在,则更新值
# key不存在,则创建键值对
v = {
    "k1":'v1', # 键值对
    "k2":'v2', # 键值对
}
v['kk1'] = 666
v['k1'] = 777
print(v)

 

7.2.4 删除

del

 

7.2.5 循环

for

 

7.2.6 嵌套

val = {
    'k1': 123,
    'k2': "asdf",
    'k3': True,
    'k4': [11,22,33],
    'k5': (1,2,3),
    'k6': {
        'kk1':'vv1',
        'kk2':'vv2',
    },
    'k7': [1,2,(8,6,2),{"k111":'vvv1'},5]
}

 

7.3 示例

# 示例:
user_list = [
    {'name':'老头','age': 18},
    {'name':'流量','age': 66},
    {'name':'wifi','age': 99},
]

n = input("请输入姓名:")
a = input("请输入年龄:")
temp = {'name': n, 'age': int(a)}
user_list.append(temp)
for item in user_list:
    print(item['name'],item['age'])

 

7.4 删除补充

不要在循环当前字典的过程中,修改当前字典大小

# 1dic = {'k1':"v1",'k2':'v2'}key="k1",键值对删除

 

# 2dic = {'u1':"v1",'k2':'v2','k3':'v3'}key中存在k,键值对删除

错误:

 

正确:

# 正确方式
dic_key_list = []
for key in dic:
    dic_key_list.append(key)

for row in dic_key_list:
    if 'k' in row:
        del dic[row]
print(dic)

 

8、字节(bytes类)

bytes

一般网络传输和硬盘存储使用bytes类型

8.1表现形式

name = b'alex'

name = b'\x12\x86\xdf\xdf\xa8\x34....'  #不在ascii表中的字符,中文字符

8.2内部原理

在硬盘内部存储以0101010形式存储,但是输出查看时以bytes形式显示

utf-8gbk...

utf-8

    一个字符三个字节,内部用二进制表示

01100001      a

01101100       l

01100101      e

01111000      x

00000010 00000000 00000000 00000110 00000000 00000000  海娇

 

gbk

一个字符两个字节

00000000 01100001      a

00000000 01101100       l

00000000 01100101      e

00000000 01111000      x

 

10000010 00000000          

10000010 00100000          

 

xxx

00000000 00000000 01100001     a

00000000 00000000 01101100     l

00000000 00000000 01100101     e

00000000 00000000 01111000     x

 

9、浮点数(float类)

#小数

    #有限小数

    #无限循环小数 3.33333 4.404404

#无限不循环小数  派

#浮点数

    #有限小数

#无限循环小数 3.33333 4.404404

 

10、复数(complex类)

#复数 = #实数 #虚数

#复数 = 实部 + 虚部

#a+bj

 

11、集合(set类)

11.1 性质

集合的元素无重复,可以做快速去重的方法

集合是可变数据类型

集合内部不能加可变数据类型,如列表,列表

集合内部元素时不可变数据类型

集合内部不能嵌套集合

 

11.2 功能

11.2.1 add()

添加

 

11.2.2 difference()difference_update()

差集

difference()

不修改原集合,改变之后的集合赋给一个新的变量

 

difference_update()

直接修改原集合

 

11.2.3 symmetric_difference()symmetric_difference_update()

排除两个集合同时存在的值

symmetric_difference()

不修改原集合,改变之后的集合赋给一个新的变量

symmetric_difference_update()

直接修改原集合

 

11.2.4 dicard()

在集合中删除制定值

 

11.2.5 intersection()intersection_update()

求交集

intersection()

不修改原集合,改变之后的集合赋给一个新的变量

intersection_update()

直接修改原集合

 

11.2.6 union()

求并集

 

11.2.7 isdisjoint()

判断是否无交集

 

11.2.8 issubset()issuperset()

issubset() 是否是子集

issuperset()是否是父集

 

11.2.9 pop()remove()discard()

删除集合的元素

pop()

删除元素并返回该元素

 

remove()

删除,如果元素不存在会报错

 

discard()

删除,如果元素不存在不会报错

 

11.2.10 update()

更新

 

11.2.11 for循环

 

11.2.12 len()

长度

 

11.3 各类型转换

 

 

转载于:https://www.cnblogs.com/xiaojinyu/p/7455123.html

相关文章:

  • 分布式数据库架构及企业实践--基于Mycat中间件pdf
  • pycharm gerrit
  • python即时标记
  • try catch 小结 , node的回调callback里不能捕获异常 , 不能被v8优化(现在能了),...
  • 实现多线程的另一种方式-Callable
  • BeginInvoke异步线程
  • ASP.NET Core 运行原理解剖[3]:Middleware-请求管道的构成
  • UVA - 10763 Foreign Exchange
  • 网络编程概述和三要素(IP/端口号/协议)以及Socket通信原理
  • 张春晖让视频的每词每句都可搜索:Autotiming 可以自动配字幕,还将改变哪些领域?...
  • 寄存器调试 (1):应用层基于shell命令访问
  • 谱聚类实例
  • postgresql update returning
  • 其实吧,360的开发,素质也没高到哪去,看代码就看出来了
  • 判断js数据类型
  • 【css3】浏览器内核及其兼容性
  • 【EOS】Cleos基础
  • CSS中外联样式表代表的含义
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Java 最常见的 200+ 面试题:面试必备
  • Java到底能干嘛?
  • Java应用性能调优
  • nginx 配置多 域名 + 多 https
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 批量截取pdf文件
  • 云大使推广中的常见热门问题
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • $(function(){})与(function($){....})(jQuery)的区别
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (day6) 319. 灯泡开关
  • (javascript)再说document.body.scrollTop的使用问题
  • (笔试题)分解质因式
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (十六)串口UART
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)c52学习之旅-流水LED灯
  • (万字长文)Spring的核心知识尽揽其中
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)LINQ之路
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • **PHP分步表单提交思路(分页表单提交)
  • *Django中的Ajax 纯js的书写样式1
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .net MVC中使用angularJs刷新页面数据列表
  • .net反混淆脱壳工具de4dot的使用
  • .net和php怎么连接,php和apache之间如何连接
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本
  • [Everyday Mathematics]20150130