Python环境搭建及Python数据类型

一.python介绍

1.下载Anaconda

  • 在官网上下载安装包:https://www.anaconda.com/distribution/
  • 安装Anaconda:Anaconda3-5.1.0-Windows-x86_64.exe
  • 配置环境变量
  • 配置代码提示

在这里插入图片描述

2.运行Python自带Demo

启动演示示例

  • python –m turtledemo

使用方法

  • 示例代码
  • 执行效果
    在这里插入图片描述

3.Python的工程结构

Python工程结构

  • 模块(module)
  • 一个Python文件就是一个模块
  • .py source code
  • .pyc compiled bytecode
  • .pyo optimized bytecode
  • 包(package)
  • 包含多个Python文件
  • init.py

导入已有模块

  • import sys
  • from os import path

4.Python开发工具

Python解释器

  • 启动方法:python

IPython交互式shell

  • 启动方法:ipython

Jupyter Notebook

  • 基于Web的可支持实时代码的应用
  • 启动方法:jupyter notebook:输入命令的目录就是工作起始目录

5.Jupyter Notebook介绍

Jupyter Notebook是一个Web应用

  • Python Kernel与Jupyter之间的关系
  • Python Kernel用于执行Python代码

使用Jupyter Notebook的方法

  • 创建Python Notebook文件:*.ipynb 支持文本,代码,图片等格式
  • 在Jupyter Notebook中编写代码
  • 执行Python代码
    开启代码提示

6.PyCharm集成开发环境

JetBrains公司开发的IDE
使用方式与IDEA相似
适合于工程类Python应用开发
下载安装PyCharm Community版

  • 创建工程
  • 设置解释器

二.python语法

1.Python语句块规范

缩进

  • Python中要求强制缩进以区分层次和代码块
  • 缩进可以使用2个空格、4个空格、1个tab键实现
  • 推荐只使4个空格进行缩进:因缩进方式不同会引起编译错误提示,需要手动修改统一缩进方式
  • PyCharm默认设置不使用“TAB缩进符”,而是设置一个TAB=4个空格

2.Python的注释方法与常见内置函数

Python注释方法

  • 单行注释:使用“#”进行注释
  • 多行注释:使用三个单引号或三个双引号进行注释

常见内置函数

函数名 说明
type() 返回对象类型
dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表
input()/print() 输入/打印输出
id() 返回对象的内存地址

3.Python变量的特点

变量名的命名原则

  • 以_或字母开头
  • 变量名以_、数字、字母组成
  • 变量名大小写敏感
  • 不能使用Python保留的关键字
  • 查看Python关键字的方法
    import keyword
    keword.kwlist

Python变量的特点

  • 使用变量前不需要声明
  • 变量的类型不固定
  • Python变量是实际值的引用
  • id(var)判断两个变量是否引用了同一个值

4.数值类型

数值类型包括整型和浮点型

类型 表示 举例
int(整数) 十进制 123、1_234_789
int(整数) 八进制 0o123、0o_1_234_567、0O_123
int(整数) 十六进制 0x123、0x_1_234_567、0X_BAD_BEEF
int(整数) 二进制 0b10、0b_0011_1100、0B_11000011
float(浮点数) - 1.23、1_2_3.、.123、.1_2_3
float(浮点数) 指数表示 1.23e4、1.2_3E-4、0E0、1e+1_1

数值类型操作符

操作符 说明 操作符 说明
x + y 加法 abs(x) 取绝对值
x - y 减法 int(x) 转换成整数
x * y 乘法 float(x) 转换成浮点数
x / y 除法 divmod(x, y) 返回一个包含商和余数的元组
x // y 除后取整 pow(x, y) 返回x的y次方
x % y 除后取余 x ** y 返回x的y次方
-x 负数 round(x[, n]) 方法返回浮点数x的四舍五入值

5.列表(list)

列表的特点

  • 用来储存多个数据的数据结构
  • 储存的数据是有序的,可使用位置索引
  • 列表长度和元素都是可变
  • 可储存不同类型的数据

列表的使用方法

  • 创建列表:['one', 2, [3, 4], (5, 6)]
  • 使用索引获取列表中的数据,支持从末尾访问-1开始:x[0], x[2], x[-1], x[-3]
  • 判断值是否存在于列表中:in和not in

6.元组(tuple)

元组的特点

  • 储存形式与列表相似
  • 与列表不同的地方:元素不可修改,长度不可改变
  • 常用于安全级别较高的场景应用

元组的使用方法

  • 创建元组
  • 使用索引获取元组中的数据:x[0], x[2], x[-1], x[-3]
  • 判断值是否存在于元组中:in和not in
t1=(1, 2, 3, 4, 5)
t2='one', 2, [3, 4], (5, 6)
t3=tuple([1,2,3])

7.列表/元组操作

通过切片获得新的列表/元组

  • [start:end:step]
  • start:起始索引,从0开始,-1表示结束
  • end:结束索引
  • step:步长,步长为正时,从左向右取值。步长为负时,反向取值

对列表x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]切片

切片 结果 切片 结果
x[1:3] [2, 3] x[1:6:2]
x[-3:-1] [8, 9] x[-8: -1:3] [3, 6, 9]
x[ :4] [1, 2, 3, 4] x[6:1:-2] [7, 5, 3]
[6: ] [7, 8, 9, 0] x[-1:-8:-3] [0, 7, 4]

遍历列表/元组中的元素

for  v  in  x:
    print(v)

zip()函数

  • 将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象
matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11]]
list(zip(*matrix))    # result: [(1, 5, 9), (2, 6, 10), (3, 7, 11)]
t = (1,2,3,4)
list(zip(t))

8.range类型

range类型

  • 一段不可变的数字序列
  • 经常被用作for里面来指定循环次数

创建range对象

  • range(start, stop, step):start的默认值是0,step的默认值是1,左闭右开原则
range对象 数列
range(4) 0,1,2,3
range(1,4) 1,2,3
range(1,4,2) 1,3
range(4,1,-1) 4,3,2

range操作方法

  • range类型也支持切片:x=range(10)
切片 结果 切片 结果
x[1:3] range(1, 3) x[1:6:2] range(1 ,6, 2)
x[-3:-1] range(7, 9) x[-8: -1:3] range(2, 9, 3)
x[ :4] (0, 4) x[6:1:-2] range(6, 1, -2)
x[6: ] (6, 10) x[-1:-8:-3] range(9, 2, -3)
  • 使用for循环遍历range()
for  v  in  range(10):
    print(v)

列表、元组、range转换

  • 列表转元组:t = tuple(l)# l是列表
  • 元组转列表:l = list(t)# t是元组
  • range转列表:l = list(r)# r是range
  • range转tuple:t = tuple(r)# r是range

9.pack&unpack

pack

  • 变量转换成序列:t = 1,2,3 #t是(1,2,3)

unpack

  • 序列转换成变量:a,b,c=t #a=1,b=2,c=3

unpack中使用*

a, b, *c = 1,2,3,4,5		   # a=1, b=2, c=[3, 4, 5]
a, *b, c = 1,2,3,4,5		   # a=1, b=[2, 3, 4], c=5
*a, b, c = 1,2,3,4,5		   # a=[1, 2, 3], b=4, c=5
*a, b, c, d, e, f = 1,2,3,4,5    # a=[], b=1, c=2, d=3, e=4, f=5

交换两个变量的值

  • a, b = b, a

在for循环中unpack元组

l = [(1,2), (3,4), (5,6)]
result=0
for x, y in l:
	result += x*y
print(result)

10.常见的序列操作

s = [1,2,3] t = [4,5,6] n = 2

操作符 说明
s+t 拼接:[1,2,3,4,5,6]
s * n or n * s 乘法:[1,2,3,1,2,3]
len(s) 计算序列的长度3
min(s) 获得序列中的最小值:1
max(s) 获得序列中的最大值:1
s.index(x[,start[, end]]) 获得第1个x元素的索引 (索引值在start和end之间)
s.count(x) 序列x元素出现的次数

可变序列支持的操作

操作符 说明
s[i] =x 更新指定索引的值
s[i:j] = t 使用序列t替换s中的i到j的值
del s[i:j] 等同于s[i:j] = []
s[i:j:k] = t 使用序列t中的值替换s[i:j:k]的值
del s[i:j:k] 删除s[i:j:k]的值
s.append(x) 将值x添加到序列的末尾
s.clear() 清空序列,相当于del s[:]
s.copy() 创建一个s的浅拷贝
s.extend(t) 使用序列t扩展序列s
s.insert(i, x) 在序列s的i索引处插入值x
s.pop(i) 返回序列s中索引为i的值,并将该值从序列中移除
s.remove(x) 将序列中第一个值为x的元素移除
s.reverse() 将序列s倒序排列

11.Set(集合)

储存形式与列表相似

  • 集合中保存的数据具有唯一性,不可重复
  • 集合中保存的数据是无序的
  • 往集合中添加重复数据,集合将只保留一个

集合常被用来去重或者过滤
创建一个集合

  • 空集合:变量=set()
  • 非空集合:变量={元素1,元素2,…}

集合操作

  • 判断值是否存在于集合中:in和not in

集合的并集

  • newSet = s1 | s2 | s3
  • newSet = s1.union(s2, s3)

集合的交集

  • newSet = s1 & s2 & s3
  • newSet = s1.intersection(s2, s3)

集合的差集

  • newSet = s1 - s2 - s3
  • newSet = s1.difference(s2, s3)

判断是否是超集

  • s1.issuperset(s2)

判断是否是子集

  • s2.issubset(s1)

判断两个集合是否相交

  • s1.isdisjoint(s2)
    集合的遍历与列表的遍历方法相同

12.字典(Dict)

通过键值对(key-value)来储存数据
储存的数据是无序的,可使用键索引
键是必须唯一,但值可以不唯一
键的类型只能是字符串、数字或元组,值可以是任何
字典操作

  • 创建字典
empty_dict = {
    
    } 
dict_1 = {
    
    1:'one', 2:'two', 3:'three'}
dict_2 = dict(one=1, two=2, three=3)

字典操作

  • 获取字典中的值
x = d[1] #1是Key,不是索引
x = d['three']
x = d.get(3, 'This value when key is not found')
  • 判断值是否是字典的键:in和not in

遍历字典

  • 遍历字典的键
  • 遍历字典的值
  • 遍历字典的键值对
#遍历字典的键
for k in x: #x.keys()
    print(k)

#遍历字典的值
for v in x.values():
    print(v)
#遍历字典的键和值
for k,v in x.items():
    print(k,v)
    

13.字符串

Python定义字符串的三种形式

  • 单引号
  • 双引号
  • 三引号(允许字符串换行)
#单引号 
str1 = 'allows embedded "double" quotes'
#双引号 
str2 = "allows embedded 'single' quotes"
#三引号
str3= '''Three single quotes,
	span multiple lines'''
str4="""Three double quotes,  
	span multiple lines"""

字符串操作

字符串操作 说明 举例
string[n:m] 字符串切片 string=‘Hello World\n’ string[0] string[:-1] string[3:5]
int() 字符串转数值类型 int(“123”) float(“123”)
str() 数值类型转字符串 str(123) str(123.456)
ord() 字符转Unicode码 ord(‘刘’)
chr() Unicode码转字符 chr(21016)
lower() 转成小写字符串 “WELCOME”.lower()
upper() 转成大写字符串 “welcome”.upper()
split() 分割字符串 words = “WELCOME TO PYTHON”.split()
type(words)# list
print(words)# [‘WELCOME’, ‘TO’, ‘PYTHON’]
words = “WELCOME TO PYTHON”.split(‘O’)
print(words)# [’WELC’, ‘ME T’, ’ PYTH’, ‘N’]
words = “WELCOME TO PYTHON”.split(’ TO ')
print(words)# [’WELCOME’, ‘PYTHON’]
join() 将序列中的元素以指定的字符连接生成一个新的字符串 s = ‘++’
list=[‘1’, ‘2’, ‘3’]
s.join(list)# result is ‘1++2++3’
s.join(‘why’)# result is ‘w++h++y’
strip() 用于移除字符串头尾/头/尾指定的字符(默认为空格或换行符)或字符序列 s = ’ “hi\ \n\tPython” ’
lstrip() s.strip() # result is ‘“hi\ \n\tPython”’
rstrip() s.strip(’ "no’) # result is ‘hi\ \n\tPyth’
in 判断是否为子串 ‘or’ in ‘toronto or orlando’ # True
find() 返回子串开始的索引值,找不到子串时返回-1 s = ‘toronto or orlando’
s.find(‘or’) # return index 1
s.find(‘or’, 2, 8) # return -1, meaning not found
index() 返回子串开始的索引值,找不到子串时抛出异常 s = ‘toronto or orlando’
s.index(‘or’) # return index 1
s.index(‘or’, 2, 8) # throw ValueError: substring not found
count() 统计字符串里某个字符出现的次数 s = ‘toronto or orlando’
s.count(‘or’) # return 3
s.count(‘or’, 2) # return 2
s.count(‘or’, 2, 9) # return 0
replace() 方法把字符串中的 旧字符串替换成新字符串 s = ‘toronto or orlando’
s.replace(‘or’, ‘/x\’)# result: t/x\onto /x\ /x\lando
s.replace(‘or’, ‘/x\’, 2)# result: t/x\onto /x\ orlando
startswith() 检查字符串是否是以指定子字符串开头 s = ‘toronto or orlando’
s.startswith(‘or’) # return False
s.startswith(‘or’, 1) # return True
s.startswith((‘or’, ‘tor’)) # return True
endswith() 检查字符串是否是以指定子字符串结尾 s = ‘toronto or orlando’
s.endswith(‘and’) # return False
s.endswith(‘and’, 1, -1) # return True
s.endswith((‘and’, ‘do’)) # return True
maketrans() translate() 字符串转换,maketrans() 设置转换模式,translate()执行转换操作 s = ‘toronto or orlando’
# define a translation table:
table=s.maketrans(‘on’, ‘.N’) # o change to .
# n change to N
# translate using above table
s.translate(table) # result: ‘t.r.Nt. .r .rlaNd.’

14.None和布尔值

None

  • 是一个特殊的常量,表示空值

Python中很多类型可以表示布尔值

TRUE FALSE
不为0的数值 0, 0.0
非空字符串 空字符串
非空列表 空列表
非空字典 空字典
非空集合 空集合

布尔操作符

  • or、and、not

比较运算符

操作符 解释
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
is 判断两个标识符是不是引用自一个对象
is not 判断两个标识符是不是引用自不同对象

15.流程控制语句

条件选择语句

if guess > secret : 
    print("too large")
elif guess < secret :	# elif is optional
    print("too small")
else :			# else is optional
    print("equals")

循环语句

while  guessed != secret :
     guessed = int(input("Guess a number: "))
else : 	 # else is optional
     print("Congratulation!")
     
for   i   in  range(0, 8, 2) :
     print(i)
else : 		# else is optional
     print("Done!")
    

break

  • break语句在循环中的作用是跳出当前循环语句
  • 循环语句的else子句不会被执行

continue

  • continue语句在循环中的作用是跳出本次循环
  • 遇到了continue将跳过本次循环的剩余代码,直接开始下一次循环

pass

  • 占位语句

三元表达式

  • 效果等同于一个if…else语句
  • result=值1 if x<y else 值2
  • 三元表达式示例
  • ‘even’ if x%2==0 else ‘odd’
  • ‘A’ if x%2 == 0 else ‘B’ if x%5==0 else ‘C’

16.列表生成式

用列表生成式创建列表
列表生成式:可以生成list列表的表达式
在这里插入图片描述

列表生成式举例

需求描述 列表生成式
0~9的平方 [x**2 for x in range(10) ]
2~99中的偶数 [x for x in range(2,100) if x % 2 == 0]
π的精度逐渐升高 from math import pi
(1~9位小数) [str(round(pi, i)) for i in range(1, 10)]
[[ 1, 0, 0, 1 ],[ 0, 1, 1, 0 ], [ 0, 1, 1, 0 ],[ 1, 0, 0, 1 ]] [[1 if r == c or r+c == 3 else 0 for c in range(4)]for r in range(4)]
字符串’what is this’中出现的字母(生成集合) sentence = ‘what is this’ { c for c in sentence if c != ’ ’ }
字符串’what is this’中含i单词(生成器表达式) sentence = ‘what is this’ (w for w in sentence.split() if ‘i’ in w)
字符串’what is this’中单词的辅音字母(生成字典) sentence = ‘what is this’ { w:{c for c in w if c not in ‘aeiou’} for w in sentence.split() }

字典生成式

  • {k:v for k,v in input if xxxx }
#将所有的key值变为大写
d = dict(a=1,b=2)
print({
    
    k.upper():v for k,v in d.items()})
#大小写key值合并, 统一以小写key值输出;
d = dict(a=2, b=1, c=2, B=9, A=5)
print({
    
    k.lower():d.get(k.lower(),0)+d.get(k.upper(),0) for k in d})

集合生成式

  • {v for v in input if xxxx}
#筛选字符串中的字母
{
    
    x for x in 'abracadabra' if x not in 'abc'}

猜你喜欢

转载自blog.csdn.net/sun_0128/article/details/108194487