掌握基本数据类型,夯实基础。

等号 和你想象的不一样

基本上所有的编程语言中, 等号都是用来表示赋值的,两个等号才是判断是否相等的。

1
2
3
4
5
6
7
int1 = 100
float1 = 100.00
name = "peng"

print(int1, float1, name)

print(name == "aaaa")

变量赋值还可以这样玩

1
a = b = c = 1
1
a, b, c = 1, 2, 3

标准数据类型知多少

六大标准数据类型,能解决你编程世界里 80% 的问题。

  1. Number 数字
  2. String 字符串
  3. List 列表(别的语言叫数组)
  4. Dictionary 字典 (别的语言叫 Hash)
  5. Tuple 元组
  6. Set 集合 (和数学中的集合概念是一样的,元素不重复,交并补)

可变数据、不可变数据

  1. Number、String、Tuple 是不可变数据

  2. List、Dictionary、Set是可变数据

关于可变和不可变,可变指的是这个对象还可以继续成长,比如你创建了一个 list,还可以往这个list里面继续添加。但是如果你创建了一个String,就不能更改这个String了,但是

1
2
a = 'abc'
a = 'aaa'

上面的代码没有报错啊,是的。首先我们要理解, a 是变量 ‘abc’ 是对象,我们把 ‘abc’ 对象命名为 a。’abc’ 对象是不能改了。但是 a 变量我可以指向别的对象。所以我创建了一个 ‘aaa’ 对象,然后 再把 a 指向 ‘aaa’ 对象,那 ‘abc’ 对象怎么办?随着时间的流失,可是会被销毁。一个没有家孩子注定要流浪,或者找的别家。

那可变对象呢?

1
2
list = [1,2,3]
list.append(4)

我们创建了一个list,里面有三个元素,1,2,3。但是我想在往 对象[1,2,3]中添加一个元素怎么办,直接加。对象还是那个对象,变量还是那个变量。这时候没有孩子要流浪了,都在家里。

可能不是很好理解。先知道就可以了。

你到底是个啥

每一个变量都是有类型的,代码太乱,不知道某个变量的类型怎么办

type

1
2
a = 123
tpye(a)

变量有身份证吗

有的

1
2
a = 123
id(a) #程序重新执行id会变的。

Number

四种类型的 数字 还记得吗,整数,小数,布尔数,复数。前三种要熟练使用。

1
2
3
int1, float1, bool1 = 1, 1.1, False
print(int1, float1, bool1)
print(type(int1), type(float1), type(bool1))

如何判断某个变量是某个类型

1
2
a = 100
isinstance(a, int)

isinstance 和 type 有啥区别

  1. type()不会认为子类是一种父类类型。断绝父子关系
  2. isinstance()会认为子类是一种父类类型。父亲的也是儿子的。

对象只能创建,不能删除吗

那怎么可能, del 删!

1
2
3
4
var1 = 100
print(id(var1))
del var1
print(id(var1))

注: 为什么不写成 del(var1) 格式, del 是一个关键字,不是个方法。所以只能用代码上诉代码中的写法。

加减乘除 取余 乘方

1
2
3
4
5
6
7
1 + 1
2 - 1
3 * 4
5 / 4 #结果为浮点数
5 // 4 #结果为一个整数
6 % 4 #取余
10 ** 4 # 乘方

除法有两种,根据事情情况选择要用哪一种。

复数就不介绍了,和数学中学的复数是相同的,分实部和虚部。

String

1
2
3
4
5
6
7
name = "pengpeng"
print(name) #输出整个字符
print(name[0])
print(name[0:4])
print(name[3:])
print(name * 3)
print(name + "!!!")

特殊字符怎么办

比如换行

1
2
print("peng\npeng") #这样是可行的
print(r"peng\npeng") #就是想打印出 \n

字符串要点

  1. 反斜杠用来转义, r 让其不转移
  2. 字符串拼接用 +, 重复用 *
  3. 索引方式有两种,从左往右以0开始,从右往左以-1开始。
  4. Python中的字符串是不能改变的,你看得到改变是变量指向了另一个字符串对象。

List

列表是个什么东东?列表就是个筐,大部分都能往里面装。

索引值以 0 为开始值,-1 为从末尾的开始位置。

加号 + 是列表连接运算符,星号 * 是重复操作。

1
2
3
4
5
6
7
list1 = ['a','bc','aa',1]
print(list1)
print(list1[1]) #输出列表中第二个元素
print(list1[2:3]) #输出第2,到第3之间的所有元素,包含第二,第三
print(list1[4:]) #输出从第4个元素开始的所有元素
print(list1 * 2) # 输出三次
print(list1 + ['peng', 'aaa']) # 链接列表

list 和 字符串的区别和联系

  • 同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
  • 但是列表中的元素是可变的。
1
2
3
list1 = [1,2,3]
list1[0] = 5
print(list1)

list要点

  • 元素之间要用 逗号 隔开。
  • list 可以被索引和截取(切片)
  • 用 + 拼接 list
  • list中的元素是可以改变的。

Dictionary

字典,可以想一下小时候用过的新华字典。一个字对应一个解释。

Python 中的字典类型也类似。一个 key 对应 一个 value。

同一个字典中,key 必须是唯一的的。不然就歧义了。

1
2
3
4
5
6
7
8
9
10
dict = {}
dict["name"] = "peng"
dict["age"] = 29
print(dict)
print(dict['name']) #某个key
print(dict.keys()) #所有key
print(dict.values()) #所有values

# 也可以这样,定义加初始化
dict1 = {"name":'peng', "age":20}

字典要点

  • 字典本质是是一种映射类型,他的元素是 键值对(key-value)
  • 字典的key必须是不可变类型,且不能重复。
  • {} 创建空字典

Tuple

元组。与列表类似,但是元素不能修改

1
2
3
4
5
6
tuple1 = ('a','b','c',1)
print(tuple1)
print(tuple[1])
print(tuple[2:])
print(tuple * 3)
print(tuple + (2,3))

Tuple 的元素真的不能改变吗

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

1
2
3
4
list1 =[2]
tuple2= (1,list1)
list1.append(3)
print(tuple2)

Tuple 要点

  • 元组的元素不能修改
  • 可以被索引和切片
  • (),空元组
  • (‘a’,) 一个元素的元组逗号不能少,少了就是别的意思的了
  • 元组也可以用 + 拼接

Set

  • 由一个或数个形态各异的大小整体组成的;
  • 构成集合的事物或对象称作元素或是成员。
1
2
3
set1 = set()
set2 = {1,2,3}
set3 = set([1,3,4])

为什么不能直接用 {} 创建空集合,{} 被 字典抢走了,虽然人家高人一等呢。

集合的运算

1
2
3
4
5
6
7
8
9
10
11
12
13
set1 = {'a', 'b', 'c'}
print(set1)
if 'a' in set1:
print('a in set1')
else:
print('a not in set1')

set2 = {'b', 'c', 'd'}
print(set2)
print(set1 - set2) #差集
print(set1 | set2) #并集
print(set1 & set2) #交集
print(set1 ^ set2) #set1 she2 中不同时存在的元素

数据类型之间的转换

需要将数据类型作为函数名即。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int('100') 

float('200.2')

str(10000)

#repr()

eval('1+1')

tuple([1,2,3])

set(tuple([1,2,3]))

dict((('a',1), ('b',2)))

frozenset(s) #转变为不可变集合

chr(100) #将一个整数转换为一个字符
ord('a') #将一个字符转换为它的整数值
hex(100) #将一个整数转换为一个十六进制字符串
oct(100) #将一个整数转换为一个八进制字符串

视频课程

https://www.bilibili.com/video/BV11D4y1S7re/