Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。

等号(=)用来给变量赋值。

等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:

#!/usr/bin/python3

counter = 100          # 整型变量
miles = 1000.0 # 浮点型变量
name = "runoob" # 字符串 print (counter)
print (miles)
print (name)

Python3 中有六个标准的数据类型:

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

Python3 的六个标准数据类型中:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

1.   Python3 数字类型(Number)

Python 数字数据类型用于存储数值。

数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。

以下实例在变量赋值时 Number 对象将被创建:

var1 = 1
var2 = 10

您也可以使用del语句删除一些数字对象的引用。

del语句的语法是:

del var1[,var2[,var3[....,varN]]]]

(1)基本的+-*/

#!/usr/bin/python3

number=10
number=number+10
print(number)
number+=10
print(number)
number=number*10
print(number)
number*=10
print(number)
number-=10
print(number)
number/=10
print(number)

(2)n次方与求开n次跟(建议使用2**3求n次方)

>>> import math
>>> math.pow(2,3)
8.0
>>> 2**3 >>> 8**(1/3)
2.0
>>>

(3)数学函数

函数 返回值 ( 描述 )
abs(x) 返回数字的绝对值,如abs(-10) 返回 10
ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5

cmp(x, y)

如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃 。使用 使用 (x>y)-(x<y) 替换。
exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0
floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4
log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。
min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。
modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
pow(x, y) x**y 运算后的值。
round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。
sqrt(x) 返回数字x的平方根。

(4)随机数函数

随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。

Python包含以下常用随机数函数:

函数 描述
choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange ([start,] stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1
random() 随机生成下一个实数,它在[0,1)范围内。
seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst) 将序列的所有元素随机排序
uniform(x, y) 随机生成下一个实数,它在[x,y]范围内。

(5)三角函数

函数 描述
acos(x) 返回x的反余弦弧度值。
asin(x) 返回x的反正弦弧度值。
atan(x) 返回x的反正切弧度值。
atan2(y, x) 返回给定的 X 及 Y 坐标值的反正切值。
cos(x) 返回x的弧度的余弦值。
hypot(x, y) 返回欧几里德范数 sqrt(x*x + y*y)。
sin(x) 返回的x弧度的正弦值。
tan(x) 返回x弧度的正切值。
degrees(x) 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
radians(x) 将角度转换为弧度

(6)数学常量

常量 描述
pi 数学常量 pi(圆周率,一般以π来表示)
e 数学常量 e,e即自然常数(自然常数)

0.  字符串类型 String

字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 " )来创建字符串。Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
创建字符串很简单,只要为变量分配一个值即可。

(1)定义以及截取

#!/usr/bin/python3

var1 = 'Hello World!'
var2 = "zhangsa" print ("var1[0]: ", var1[0])
print ("var2[1:5]: ", var2[1:5])

结果:

var1[0]: H
var2[1:5]: hang

(2)字符串是不可变类,类似于Java的字符串类型:

#!/usr/bin/python3

var1 = 'Hello World!'
var2 = var1 var1 = var1[:6] + "ZHANGSAN" print ("var1: ", var1)
print ("var2: ", var2)

结果:

var1: Hello ZHANGSAN
var2: Hello World!

(3)python转义字符

在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。如下表:

转义字符 描述
\(在行尾时) 续行符(类似于Properties文件的换行符)
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy 代表的字符,例如:\o12 代表换行,其中 o 是字母,不是数字 0。
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

例如:续行符以及转义'

#!/usr/bin/python3

var1 = 'Hello World!'
var2 = var1 var1 = var1[:6] + "ZHAN\
GSAN,welcome to \'China\'" print ("var1: ", var1)
print ("var2: ", var2)

结果:

var1: Hello ZHANGSAN,welcome to 'China'
var2: Hello World!

(4)字符串运算符

下表实例变量a值为字符串 "Hello",b变量值为 "Python":

操作符 描述 实例
+ 字符串连接 a + b 输出结果: HelloPython
* 重复输出字符串 a*2 输出结果:HelloHello
[] 通过索引获取字符串中字符 a[1] 输出结果 e
[ : ] 截取字符串中的一部分,遵循左闭右开原则,str[0,2] 是不包含第 3 个字符的。 a[1:4] 输出结果 ell
in 成员运算符 - 如果字符串中包含给定的字符返回 True 'H' in a 输出结果 True
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True 'M' not in a 输出结果 True
r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
print( r'\n' )
print( R'\n' )
% 格式字符串 请看下一节内容。

例如:

#!/usr/bin/python3

a = "Hello"
b = "Python" print("a + b 输出结果:", a + b)
print("a * 2 输出结果:", a * 2)
print("a[1] 输出结果:", a[1])
print("a[1:4] 输出结果:", a[1:4]) if( "H" in a) :
print("H 在变量 a 中")
else :
print("H 不在变量 a 中") if( "M" not in a) :
print("M 不在变量 a 中")
else :
print("M 在变量 a 中") print (r'\n')
print (R'\n')

结果:

a + b 输出结果: HelloPython
a * 2 输出结果: HelloHello
a[1] 输出结果: e
a[1:4] 输出结果: ell
H 在变量 a 中
M 不在变量 a 中
\n
\n

(5)python字符串格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

#!/usr/bin/python3

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))

结果:

我叫 小明 今年 10 岁!

python字符串格式化符号:

符   号 描述
      %c  格式化字符及其ASCII码
      %s  格式化字符串
      %d  格式化整数
      %u  格式化无符号整型
      %o  格式化无符号八进制数
      %x  格式化无符号十六进制数
      %X  格式化无符号十六进制数(大写)
      %f  格式化浮点数字,可指定小数点后的精度
      %e  用科学计数法格式化浮点数
      %E  作用同%e,用科学计数法格式化浮点数
      %g  %f和%e的简写
      %G  %f 和 %E 的简写
      %p  用十六进制数格式化变量的地址

(6)三行符:

python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。实例如下

#!/usr/bin/python3

para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
para_str2 = r"""这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)
print (para_str2)

结果:

这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( )。
也可以使用换行符 [
]。

这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。

三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

一个典型的用例是,当你需要一块HTML或者SQL时,这时用字符串组合,特殊字符串转义将会非常的繁琐。

errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (
login VARCHAR(8),
uid INTEGER,
prid INTEGER)
''')

3.list类型

  类似于java的list类型,数据集合,可以追加元素与删除元素。

  遍历list可以用下标进行遍历,也可以用迭代器遍历list集合

  建立list的时候用[]括号

import sys
list1 = [ 'zhangsan' , 'lisi' , 'wangyu' ]
# 直接打印集合
print(list1) # c从0开始,类似于java
print(list1[1]) # 负号代表倒着数
print(list1[-1]) # 打印集合长度
print(len(list1)) # 追加元素
list1.append("john")
print(list1)
print(list1[-1]) # 插入到指定位置
list1.insert(1, 'john1')
print(list1) # 删除元素
# 删除最后一个元素
list1.pop()
print(list1) # 删除指定位置的元素
del_o= list1.pop(0) # del_0记录删除的元素
print(list1)
print(del_o) # 修改(直接覆盖指定位置的值) # 通过迭代器遍历list的两种方式(for和while)
it = iter(list1) # 创建迭代器对象
for x in it:
print (x, end=" ") it1 = iter(list1) # 创建迭代器对象
print()
while True:
try:
print(next(it1), end=' ')
except StopIteration:
sys.exit()

补充:通过enumerate方法遍历集合

  enumerate方法将list的值与下标包装成一个tuple

# 1.迭代list
# 使用enumerate方法。
L = ['zhangsan', 'lisi', 'wangwu']
# 使用enumerate方法处理集合后集合变为包含tuple的集合 [(0,'zhangsan'),(1,'lisi'),(2,'wangwu')]
# tuple的特性是:拿一个元素接tuple会将整个tuple赋给此元素,拿与tuple长度相等元素接tuple会将tuple的值依次赋给元素
# 第一种遍历方法
for index,value in enumerate(L):
print(index, '-', value) # 第二种方法
for t in enumerate(L):
print(t[0], '-', value)

4.tuple类型

  与list不同的是元素不可以变,不可以追加元素。元组使用小括号,列表使用方括号。

  遍历tuple可以用下标遍历

  tuple用()括号建立

# tuple类似于list,只是一旦创建不可改变
tuple1=('zhangsan', 'lisi', 'wangwu')
print(tuple1)
print(tuple1[1])
print(tuple1[-1]) # 只有一个int型的tuple
tuple2=(1,)
print(tuple2[0]) # tuple中有list的情况,list中的元素可以进行增删改
tuple3=('zhangsan','lisi',['wangwu','zhaoliu'])
print(tuple3)
print(tuple3[-1])
tuple3[-1].append('tianqi') # tuple中的list集合中添加元素
print(tuple3)
tuple3[-1][0]='sunwu' #修改tuple中的list中的元素值
print(tuple3) # 用多个值接tuple会将tuple的元素分别赋给对应元素的值
tuple4=(1, 2)
x, y = tuple4
print(x, y)

5.set类型

  与list不同的是不能有重复元素,而且存储的是不可变对象。

  遍历set不可以用下标(set是无序集合)

  建立set用set([])建立,括号中也可以传入一个集合。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

# set用法,set与list一样,只是存储的不能有重复元素,其次存储的是不可变对象,类似于list就是可变对象
# 创建set(如果集合中有重复元素会自动删除重复元素)
# set1=set([1,2,'kkk',3,'wiwiwi'])
set1 = {1,2,'kkk',3,'wiwiwi'}
print(set1)
print("set1的长度此时是:", len(set1)) # 遍历set(只能用下面这种方式遍历,不能根据下标遍历,set元素没有下标)
for ele in set1:
print(ele) # 追加元素(如果元素不存在会加入到set中,如果元素存在则不会追加)
set1.add("mmm")
print(set1) # 删除元素(如果直接删除而元素不存在于set中会报错)
if 'mmm' in set1:
set1.remove('mmm')
print(set1)

结果:

{1, 2, 3, 'kkk', 'wiwiwi'}
set1的长度此时是: 5
1
2
3
kkk
wiwiwi
{1, 2, 3, 'kkk', 'wiwiwi', 'mmm'}
{1, 2, 3, 'kkk', 'wiwiwi'}

6.dict类型(类似于java的map)

  dict类型存储的键值对,类似于java的map

  不可以用下标遍历,可以用in遍历dict的key,通过key获取value

  创建的时候用{key:value,key1:value1...}

# dict类型练习
# 定义一个dict类型
dict1={"zhangsan": 100,"lisi": 999,"wangwu":99}
print(len(dict1))
print(dict1["zhangsan"])
if "tianqi" in dict1:
print(dict1["tianqi"])
else:
print("tianqi is not in dict1") # 更新dict
dict1["zhangsan"]=0
# 追加元素
dict1["tianqi"]=100
# 删除字典元素
del dict1["wangwu"] # 循环遍历dict
for key in dict1:
print("key:",key,"value:",dict1[key])

补充:

dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value

items() 方法把dict对象转换成了包含tuple的list,对list进行迭代即可同时获得key和value

# 2.迭代dict
# 2.1 迭代dict的value
# 2.1.1第一种方法 使用dict.value()方法
# dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value:
dict1={"zhangsan": 100,"lisi": 999,"wangwu":99}
values = dict1.values()
print(values) #[100, 999, 99]
# 遍历value集合
for ele in values:
print(ele) # 2.2 迭代dict的key 和 value 使用items方法(会将dict的key和value变成tuple)
# items() 有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。
print(dict1.items())
# [('zhangsan', 100), ('lisi', 999), ('wangwu', 99)]
# 第一种遍历
for t in dict1.items():
print(t[0], '-', t[1]) # 第二种遍历
for key,value in dict1.items():
print(key, '-', value)

补充:isinstance和type 可用于判断类型

isinstance 和 type 的区别在于:

  • type()不会认为子类是一种父类类型。
  • isinstance()会认为子类是一种父类类型。
#!/usr/bin/python3

counter = 100          # 整型变量
miles = 1000.0 # 浮点型变量
name = "runoob" # 字符串 print (type(counter))
print (type(miles))
print (type(name)) print (isinstance(counter, int))
print (isinstance(miles, float))
print (isinstance(name, str))

结果:

<class 'int'>
<class 'float'>
<class 'str'>
True
True
True

python基本数据类型list,tuple,set,dict用法以及遍历方法的更多相关文章

  1. python 中 五种字典(dict)的遍历方法,实验法比较性能。

    1 .背景: 想知道5种遍历方法,并且知道从性能角度考虑,使用哪种. 2.结论: 使用这种方式: for key,val in AutoDict.iteritems(): temp = "% ...

  2. python之 list、tuple、dict、set

    2016-08-24   14:32:59 list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 例如:定义一个列表L,里面存放了一些姓氏 ...

  3. Python之list、tuple、dict、set

    参考原文 廖雪峰Python PS:来看看Python中比较特殊的几种数据类型list.tuple.dict.set list list(列表)是Python内置的一种数据类型,它是一种有序.可变的集 ...

  4. Python基础-list,tuple,dict,set常用方法及区别

    1,列表list 列表定义方式 lis1=[1,2,3,4]#一维数组 lis2=[1,2,3,[4,5,6]]#二维数组 依次多有多维数据,套几层就是几维数组 列表的取值可以通过下标来,下标都是从0 ...

  5. python中list、tuple、dict、set的使用

    1.list列表 list是一种可变的,有序的列表,可以随时添加和删除其中的元素. 其格式如下:list-name=[element1,element2,....] >>> nums ...

  6. Python基本数据类型之tuple

    一.创建元组: ages = (11, 22, 33, 44, 55) ages = tuple((11, 22, 33, 44, 55)) 元组和列表几乎一样 元组的元素不可修改,但是元组元素的元素 ...

  7. Python基础数据类型(四) tuple元祖

    元祖tuple(,) 元祖就是不可变的列表 元祖用()表示,元素与元素之间用逗号隔开,数据类型没有限制 tu = ('科比','詹姆斯','乔丹') tu = tuple('123') 小括号中 有一 ...

  8. python中元组(tuple)的用法

    t=(1,2,3) t=() t=(1,)#元组中只有一个值,需在值后面加上,不然会当int型识别 te.count(1) te.index(2) te[::-1]#关于切片跟列表一样的 tuple的 ...

  9. HashMap的一般用法以及遍历方法

    private Map<Integer,String> selected = new HashMap<Integer,String>(); selected.put(key,v ...

随机推荐

  1. js 实现路由功能

    class Router { constructor() { this.routes = [] } handle(pattern, handler) { this.routes.push({ patt ...

  2. 【bzoj4487】[Jsoi2015]染色问题 容斥原理

    题目描述 棋盘是一个n×m的矩形,分成n行m列共n*m个小方格.现在萌萌和南南有C种不同颜色的颜料,他们希望把棋盘用这些颜料染色,并满足以下规定: 1.  棋盘的每一个小方格既可以染色(染成C种颜色中 ...

  3. 转--- 秒杀多线程第六篇 经典线程同步 事件Event

    阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇 一个经典的多线程同步问题> <秒杀多线程第五篇 经典线程同步关键段CS> 上一篇中使用关键段来解决经典的多线程同步互斥问题 ...

  4. 【明哥报错簿】之json转换报错---net.sf.ezmorph.bean.MorphDynaBean cannot be cast to XXXDO

    简单的json和bean转换直接用: public static void main(String[] args) { String s = "{'request': [{'orderCod ...

  5. 二分图匹配模板(dfs+bfs)

    dfs版: bool dfs(int u) { for(int i = head[u]; ~i; i = e[i].next) { int v = e[i].v; if(!vis[v]) { vis[ ...

  6. svn和git的区别及适用场景

    svn和git的区别及适用场景 来源 https://blog.csdn.net/wz947324/article/details/80104621 svn的优势: 优异的跨平台支持,对windows ...

  7. [洛谷P1642]规划

    题目大意:有一棵$n(n\leqslant100)$个点的树,每个点有两个权值$a,b$,要求选择一个$m$个点的连通块$S$,最大化$\dfrac{\sum\limits_{i\in S}a_i}{ ...

  8. 【BZOJ5319】军训列队(主席树)

    [BZOJ5319]军训列队(主席树) 题面 BZOJ 洛谷 题解 一眼题既视感... 首先很明显,每次询问的结果显然是做一次离散. 然后直接上主席树就好了... 查询答案的方式也很简单 考虑一下那个 ...

  9. 【ZOJ3316】Game(带花树)

    [ZOJ3316]Game(带花树) 题面 Vjudge 翻译: 给定棋盘上\(n\)个旗子 一开始先手可以随便拿, 然后每次都不能取离上次的曼哈顿距离超过\(L\)的旗子 谁不能动谁输. 问后手能否 ...

  10. [POI2005]Bank notes

    link 试题分析 我们发现此题是一个十分简单的多重背包.但是按照朴素写法会超时.所以要去考虑优化. 我们发现我们若$W=7$,可以拆成$1+2+4$,不用每次$1+1+1+1+1+1+1$,从$N$ ...