2、Python变量与数据类型

变量

变量在程序中能储存计算结果或表示值抽象概念,变量可以通过变量名访问。
变量命名规则:

变量名只能是字母,数字和下划线的任意组合
变量名不能以数字开头
变量名大小写敏感
变量名不能为关键字

声明变量

Python 变量不需要声明,但变量在使用前必须赋值,赋值后该变量才被创建。Python中变量是没有类型的,但变量所指向内存中的对象是有类型的
示例:

name = "Jack"

变量赋值

在 Python 中,等号=是赋值语句,可以把任意数据类型赋值给变量。变量的值可以被修改,而且同一变量名可以被赋值不同类型的值。

a = 123     # a 是整数
a = 'hello' # a 是字符串
a = b = c = 1 # python允许为多个变量赋值,可以使多个变量被赋予相同的值
a,b,c = 1,3,"lili" # 也可以给多个变量赋予不同的值

常量

在 Python 中,通常用全部大写的变量名表示常量如ONE = 1,但实际上ONE还是一个变量,可以被改变值。

数据类型

Python3有6种标准数据类型:
不可变数据:Number、String、Tuple(元组)
可变数据:List(列表)、Dictionary(字典)、Set(集合)

Number

数值类型用于存储数值,python3支持的数值类型如下:

类型 说明
int 整型,Python3中整型没有大小限制,所以可以当做Long类型使用
float 浮点型,由整数部分和小数部分组成
complex 由实数部分和虚数部分构成,可以用a+bj或者complex(a,b)表示,实部a和虚部b都是浮点型
bool 布尔型,取值只有True和False两种

示例:

counter = 100   # 整型变量
miles = 1024.2  # 浮点型变量
comp = 1 + 6j   # 复数型变量
flag = True     # 布尔型变量

print(counter)  # 100
print(miles)    # 1024.2
print(comp)     # 1+6j
print(flag)     # True

数字类型转换:
Python提供下列方法,实现将其他类型变量转换为数字类型:

int(x)将x转换为整型
float(x)将x转换为浮点型
complex(x)将x转换为复数,结果为x+0j
complex(x)将x和y转换为复数,结果为x+yj

示例:

# 进行类型转换,输出变量的类型和值

num = '5'
# type = <class 'str'>, value = 5
print('type = %s, value = %s' % (str(type(num)), num))
num = int(num)
# type = <class 'int'>, value = 5
print('type = %s, value = %s' % (str(type(num)), num))
num = float(num)
# type = <class 'float'>, value = 5.0
print('type = %s, value = %s' % (str(type(num)), num))
num = complex(num)
# type = <class 'complex'>, value = (5+0j)
print('type = %s, value = %s' % (str(type(num)), num))
num = complex(num, 6)
# type = <class 'complex'>, value = (5+6j)
print('type = %s, value = %s' % (str(type(num)), num))

String(字符串)

Python不支持单字符类型,即单字符在Python也是作为字符串使用。创建字符串可以通过单引号双引号三单引号和三双引号,其中三引号可以定义多行字符串。
定义一个字符串s = 'py',该语句在计算机中的执行顺序是先在内存中创建一个字符串py,然后在程序栈寄存器中创建一个变量s,最后将py的地址赋予s

字符串操作的常用方法:

方法 说明
s[:: -1] 反转字符串
s[x] 获取字符串中索引为x的字符
s[-x] 从右向左,获取字符串中索引为x的字符
s[x:] 截取字符串中索引x之后的字符串
replace(oldstr, newstr) 将字符串中中的oldstr全部替换为newstr
find(str) 返回第一次出现子串的索引,找不到则返回-1
find(str, x) 返回索引x之后第一次出现子串的索引
index(str) ,返回第一次出现子串的索引,找不到则会报错ValueError: substring not found
rfind(str) 从右向左寻找,返回第一次出现子串的索引
upper() 将字符串转为大写
lower() 将字符串转为小写
swapcase() 将字符串中的小写字母转为大写,大写字母转为小写
capitalize() 将字符串中的第一个字符大写,其他字符小写
istitle() 判断字符串中所有的单词是否符合首字母大写,其它字母小写
islower() 判断字符串中所有的字母是否为小写
strip() 去除字符串首尾的空格

示例:

s = 'Python使我快乐,学习Python'

print(s[:: -1])  # 反转字符串
print(s[0])      # 输出字符串中索引为0的字符
print(s[-1])     # 输出字符串倒数第一个字符
print(s[3:])     # 输出索引3及其之后的字符

print(s.replace('Python', 'Java'))  # 将字符串中所有的Python替换为Java

print(s.find('P'))     # 返回第一次出现子串的索引
print(s.find('P', 4))  # 设定从索引4开始查找
print(s.find('J'))     # 找不到则返回-1
print(s.index('P'))    # 返回第一次出现子串的索引
# print(s.index('J'))  # 查找不到时会报错: ValueError: substring not found
print(s.rfind('P'))    # 从右向左寻找,返回第一次出现子串的索引

print(s.upper())       # 转为大写
print(s.lower())       # 转为小写
print(s.swapcase())    # 大写转为小写,小写转为大写
print('s = ', s)
print(s.capitalize())  # 把字符串的第一个字符大写,其他字符小写
print(s.istitle())     # 判断字符串中所又的单词是否符合首字母大写,其他字母小写
print(s.islower())     # 判断是否全为小写

s = ' p p p p p '
print(s.strip())       # 去除首尾空格
print(s.lstrip())      # 去除左空格
print(s.rstrip())      # 去除末尾空格

字符串格式化

推荐采用format()方法进行字符串格式化。

print('name: %s,age: %s' % ('Jack', '21'))
print('name: {},age: {}'.format('Jack', '21'))
print('name: {0},age: {1}'.format('Jack', '21'))
print('name: {name},age: {age}'.format(name='Jack', age=21))

字符串拼接与拆分

使用+进行字符串拼接需要每次都重新计算、开辟、释放内存,效率低下。因此推荐使用join()进行字符串拼接。

time = ['2019', '10', '21 15:35']
# 字符串拼接
time = '-'.join(time)
print(time)              # 2019-10-21 15:35
#字符串分割
print(time.split('-'))   # ['2019', '10', '21 15:35']

字符串编码转换

python 字符串默认是Unicode编码。当进行文件保存到外设或进行网络传输时,应该进行编码转换,将字符转换为字节,以便提高效率。

str = '学习Python'
# 将字符转为字节
print(str.encode())                     # b'\xe5\xad\xa6\xe4\xb9\xa0Python'
print(str.encode('gbk'))                # b'\xd1\xa7\xcf\xb0Python'
# decode 将字节转为字符
print(str.encode().decode('utf8'))      # 学习Python
print(str.encode('gbk').decode('gbk'))  # 学习Python

List

List是由[]和元素组成的,可以实现大多数集合类的数据结构。List中的元素的类型可以不同,它支持Number型、String型,也可以嵌套List。List中的元素值是可变的。

week = ['Monday', 'Tuesday', 'Wednesday']
print(week[1])                 # Tuesday  通过索引获取list中的值
print(week.index('Monday'))    # 输出匹配的值在list中的索引
# print(week.index('Friday'))  # 当该值在字符串中没找着时会报错:ValueError: 'Friday' is not in list
week.append('Thursday')        # list中增加元素
print(week)
week.remove('Tuesday')         # list中删除指定元素
print(week)

Tuple(元组)

tuple是由()和元素组成。tuple中的元素的类型可以不同,但元素值是不可变的。

week = ('Monday', 'Monday', 'Tuesday', 'Wednesday')
print(week[1])                 # Tuesday  通过索引获取tuple中的值
print(week[0:3])               # tuple切片
print(week.index('Monday'))    # 输出匹配的值在tuple中的索引
# print(week.index('3'))       # 当该值在字符串中没找着时会报错:ValueError: tuple.index(x): x not in tuple
print(week.count('Monday'))    # 获取某个值在tuple中的数量

Set(集合)

set是一个无序不重复元素的序列,使用大括号 {}或者set()创建,注意:创建一个空集合必须用 set() 而不是{},因为{}是用来创建一个空字典

number_set = {1, 2, 3, 4, 5, 5}
# set是无序不重复的序列,因此重复的5被视为1个
print(number_set) # {1, 2, 3, 4, 5}
# 添加元素
number_set.add(6)
print(number_set)
# 删除元素
number_set.remove(5)
print(number_set) # {1, 2, 3, 4, 6}

Dictionary(字典)

字典是一种映射类型,它的元素是键值对,字典中的key必须为不可变类型,且不能重复。创建空字典使用 {}

person_info = {
    'name': 'Jack',
    'age':  13,
    'school': 'NAS',
}
print(person_info)          # {'name': 'Jack', 'age': 13, 'school': 'NAS'}
# 输出key为'age'对应的值
print(person_info['age'])   # 13
# 列出所有的key
print(person_info.keys())   # dict_keys(['name', 'age', 'school'])
# 列出所有的key对应的value
print(person_info.values()) # dict_values(['Jack', 13, 'NAS'])
# 获取key的数量
print(len(person_info))     # 3
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章