机器学习基础(三)Python知识串讲---基础数据类型

机器学习基础知识笔记

1.基本数据类型

  • 变量: 来源于数学,是计算机语言中能存储计算结果或能表示值的一个抽象概念。
  • 数据类型: 变量可以存放各种数据,这就意味着在创建变量时会在内存中开辟一个空间。由于所存储的数据类型各异,Python虚拟机就会决定为不同的类型数据开辟大小不同的内存空间。因此变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。
  • 由于变量在程序中会被频繁访问,因此变量是存储在计算机的Stack栈内存中。
# c、c++ 、Java 强类型语言
# Python 弱类型语言
# Python语言的变量由等号(赋值符号)的右边来决定左边
a = 1
print(type(a))

a = 2.0
print(type(a))

在这里插入图片描述
Python的数据类型是在代码解释运行时才确定的,由复制等号右侧的数据类型决定。其中type()函数是查看变量数据类型的函数。

  • Python定义了一些标准类型,用于存储各种类型的数据。Python有六个标准的数据类型:Numbers,String,List,Tuple,Sets(数值唯一),Dictionary(map结构)。三个不可变数据:Number,String,Tuple(元组);三个可变数据:List,Dictionary,Set。
  • Python变量必须赋值赋值后才会被创建。
# id()可以查看变量引用的内存地址
a = b = c = 1
print(id(a))
print(id(b))
print(id(c))
a = 1 ; b = 2 ; c = 3
print(id(a))
print(id(b))
print(id(c))

前一种赋值方式,存储在同一个地址下,而第二种赋值(三行独立赋值),存储在三个地址下,每个地址间相差4个字节(32bits,即1个int类型的大小)。
在这里插入图片描述

2. 标准数据类型

介绍数字和字符串的数据类型的具体操作。

  • 数字数据类型用于存储数值。
  • del a ,是删除了变量a对应栈。
  • Python支持四种不同的数字类型:
    (1) int,有符号整型,通常被称为是整型或长整数,是正或负整数,不带小数点。Python3中只有int,没有long。
    (2)float,浮点型,由整数部分与小数部分组成,浮点型也可以使用科学计数法表示。
    (3) bool,布尔类型,由True或False,即真1或假0,常用于逻辑判断使用。
    (4)complex, 复数,由实数部分和虚数部分构成,可以用a + bj 或者complex(a,b)表示,复数的实部a和虚部b都是浮点数。
# Python没有char类型,只有字符串类型

# 单双引号意义相同
str1 = "I love China!"
str2 = 'I love China!'

# 字符串的拼接
str3 = str1 + str2
print(str3)

# 不同类型与str拼接,需要进行类型转换
a = 1
str4 = str3 + str(a)
print(str4)

# 字符串是多个字符组成的数组,因此可以使用Index索引访问
print(str1[4])
print(str1[-1])  # Python支持负索引,-1是最后一个字符

# 切片,例如取出love, start: end: step,不包含end,默然step是1
print(str1[2:6:1])
print(str1[::-1])  # 镜面颠倒字符串
print(str1[2:6:2])
print(str1[2:])  # == str1[2:13:1]
print(str1[:6])  # == str1[0:6:1]

# 字符串重复拼接
print(str2 * 100)

在这里插入图片描述

  • 字符串运算符in和not in : 我们经常可以判断字符串中是否包含某个指定的字符或子字符串,这个时候就需要使用in或not in来进行操作。
  • 字符串大小写转换:lower()/upper()/swapcase()/title()
  • 字符串搜索、替换: find()/count()/replace()/strip()/lstrip()/rstrip()
  • 字符串分割、组合:split()/join()
  • 字符串编码、解码:decode()/encode()
  • 字符串测试:isalpha()/isdigit()/isspace()/islower()/isupper()/istitle()
# 字符串的拆分和还原
list1 = str1.split(' ')  # 使用空格进行分词
print(list1)
str4 = ' '.join(list1)
print(str4)

在这里插入图片描述

# strip: 去掉字符串首位的空字符, lstrip是去掉左边的空字符,rstrip是去掉右边的空字符;
str5 = "    China!    "
print(str5.strip())

print(str1.upper())
print(str1.lower())
print(str1.isalpha())  # 是否都是字母,空格不是字母
print(str1.isdigit())  # .不是数字,所以无法判断浮点数

# replace
str6 = str1.replace('China', 'Beijing')
print(str6)

在这里插入图片描述

3. 列表和元组

  • 列表的定义和基础操作
# 列表和元组
# 定义列表 列表是用[]来定义
list1 = [1, 2, 3, 4, 5]
print(list1[0])

# 空列表
listn = []

list2 = list('abcdefg')  # 打散插入
print(list2)
# 列表元素可以被访问
for ch in list2:
    print(ch)
    pass

# 打散插入机制理解
list3 = []
for ch in 'abcdefg':
    list3.append(ch)
    pass
print(list3)

# 列表可以存放不同类型的数据,而且可以嵌套
list4 = ['zhangsan', '20', 1000000000.00, '13400000001', '女', False]
print(list4)
list4.append('1234567')
print(list4)

# 列表可以嵌套
list5 = ['zhangsan', '20', 1000000000.00, '13400000001', '女', False, ['踢足球', '跑步', '读书']]
print(list5)
array = [1,2, 3, 4, 5]
array2 = [[1,2,3],
          [4,5,6.0]]
print(array)
print(array2)

在这里插入图片描述

  • 生成器和迭代器
# range() 生成器,定义程序执行的规则
obj = range(0, 100, 1)  # start, end, step
it = iter(obj)
value = next(it)
print(value)
value1 = next(it)
print(value1)

for i in obj:
    print(i)
    pass

在这里插入图片描述

  • 枚举
# 枚举, 返回元素的下标和元素的值
for i, temp in enumerate(list4):
    print(i, temp)
    pass
# 有很多种写法,并不唯一
for i in range(len(list4)):
    print(i, list4[i])
    pass

在这里插入图片描述
Python语言的灵活性体现在此处,不同的人处理同样的功能,写的代码会完全不一样,因为语法过于灵活和丰富,有各种不同的写法都可以实现相同的功能。

list6 = list(range(100))
list7 = []
for temp in list6:
    if temp % 2 == 0:
        list7.append(temp)
        pass
    else:
        list7.append(-1)
    pass
print(list7)

# 推导式
list8 = [x if x % 2 == 0 else -1 for x in list6]
print(list8)
list9 = [x**2 for x in list6]
print(list9)

在这里插入图片描述

# list常用函数
# 删除元素
list9.remove(1)
print(list9)
# 插入元素
list9.insert(1, 10000)
print(list9)
# 倒序
list9.sort(reverse=True)
print(list9)
  • 列表也可以切片,参考上文。
  • 两个列表求和,就是两个列表拼接;列表乘数字,就是重复拼接多少;in 与 not in的用法与字符串类似;列表也可以嵌套。
  • 常用函数: len() / max() / min() /.append() / .reverse() == [:,:,-1]
  • list[] 与 list[:] 的区别:
    (1)[] 标识,是典型的引用操作,传址操作;
    (2)[:]标识,是典型的赋值操作,传值操作;
    # 传址
    list_ 1 = [1, 2, 3,4]
    list_2  = list1  # list_2是list_1的引用
    
    # 传值
    list_2 = list_1[:]  # 改变list_2值不会改变list_1本身
    
  • 元组
# 元组,可以认为是不可变的列表
tuple = (1, 2, 3, 4, 5, 6)
print(tuple[0])
#  不允许修改, 例如tuple[0] = 10000,这种语法不被允许
# tuple1 = (1) 这种定义方式不是tuple,因为小括号可以用来改变优先级,例如(1+2)*3,所以不加逗号的话,就无法区分()的用法
tuple1 = (1, )  # 定义只有1个元素的元组

元组是不可修改的,而列表是可以修改的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值