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()返回子串开始的索引值,找不到子串时返回-1s = ‘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中很多类型可以表示布尔值

TRUEFALSE
不为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'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值