Python基础知识总结

Python 数据类型

一、整数

Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。

计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。

二、浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

三、字符串

字符串是以''或""括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。

四、布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来。

布尔值可以用and、or和not运算。

and运算是与运算,只有所有都为 True,and运算结果才是 True。

or运算是或运算,只要其中有一个为 True,or 运算结果就是 True。

not运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True。

五、空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值

(或者# -*- coding:utf-8 -*- )
#coding:utf-8     // 如下字符串包含中文,如果不加这一行,报错:SyntaxError: Non-ASCII character 
print('hello worlds打发')

print
print 'hello,python.'
print 'hello,','python.'   //遇到逗号“,”会输出一个空格
print ('hello,python.')
print ('hello,'+'python.')

结果

注释

Python的注释以 # 开头。

变量

在Python程序中,变量是用一个变量名表示,变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头。

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

a = 123    # a是整数
print a
a = 'imooc'   # a变为字符串
print a

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。

静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释):

int a = 123; // a是整数类型变量
a = "mooc"; // 错误:不能把字符串赋给整型变量

理解变量在计算机内存中的表示也非常重要。当我们写:a = 'ABC'时,Python解释器干了两件事情:

  1. 在内存中创建了一个'ABC'的字符串;

  2. 在内存中创建了一个名为a的变量,并把它指向'ABC'。

也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:

a = 'ABC'
b = a
a = 'XYZ'
print b    # b的值是'ABC',还是'XYZ'呢?

执行a = 'ABC',解释器创建了字符串 'ABC'和变量 a,并把a指向 'ABC':

执行b = a,解释器创建了变量 b,并把b指向 a 指向的字符串'ABC':

执行a = 'XYZ',解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:

所以,最后打印变量b的结果自然是'ABC'了。

字符串

字符串可以用''或者""括起来表示。字符串本身包含',用"",如果字符串包含",我们就可以用' '。

如果字符串既包含'又包含"怎么办?这个时候,就需要对字符串的某些特殊字符进行“转义”,Python字符串用 \ 进行转义。

比如要表示字符串 Bob said "I'm OK".
可以写为:'Bob said \"I\'m OK\".'

注意:转义字符 \ 不计入字符串的内容中。

常用的转义字符还有:

\n 表示换行
\t 表示一个制表符
\\ 表示 \ 字符本身

如果要表示多行字符串,可以用'''...'''表示:

'''Line 1
Line 2
Line 3'''
Python中整数和浮点数

Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数。整数和浮点数混合运算的结果是浮点数。

为什么要区分整数运算和浮点数运算呢?这是因为整数运算的结果永远是精确的,而浮点数运算的结果不一定精确,因为计算机内存再大,也无法精确表示出无限循环小数,比如 0.1 换成二进制表示就是无限循环小数。

print 11/4    # 2
print 11%4    # 3
print 11.0/4   #2.75
Python中布尔类型

布尔运算在计算机中用来做条件判断,根据计算结果为True或者False,计算机可以自动执行不同的后续代码。

在Python中,布尔类型还可以与其他数据类型做 and、or和not运算,请看下面的代码:

a = True
print a and 'a=T' or 'a=F'   # 输出a=T

Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True。

要解释上述结果,又涉及到** and 和 or 运算的一条重要法则:短路计算**。

1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
list

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

构造list非常简单,按照上面的代码,直接用 [ ] 把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list:

classmates = ['Michael', 'Bob', 'Tracy']

由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据:

L = ['Michael', 100, True]

一个元素也没有的list,就是空list:

empty_list = []

此外,list中又可以包含list

fan = [["liz",12],
       ["tom",23],
       ["Lisa",24]]
print type(fan)  # 输出fan的数据类型 
Python 索引访问list
L = ['hello', 'hi', 'bye']
print L[0]    #输出hello
倒序访问list

我们可以用 -1 这个索引来表示最后一个元素

L = ['hello', 'hi', 'bye']
print L[-1]    #输出bye
print L[-2]    # 输出hi
print L[-3]    #  输出hello

注意访问list,不要越界!

添加新元素
  • 向list的尾部添加元素 append
L = ['Adam', 'Lisa', 'Bart']
L.append('Paul')
print L    #输出 ['Adam', 'Lisa', 'Bart', 'Paul']

或者

 L = L + ['hello']
 print L   # 输出 ['Adam', 'Lisa', 'Bart','hello'] 
  • 向list指定的位置插入新元素用insert( )方法,接受两个参数,第一个是索引号,第二个是新元素。
L = ['Adam','Lisa','Bart']
想把一个新元素Paul插入到Adam的前面,也就是说Paul将要放在第一位
L.insert(0,'Paul')  # 或者L.insert(-3,'Paul')
print L  # 输出['Paul', 'Adam', 'Lisa', 'Bart']
从list删除元素

pop()方法总是删掉list的最后一个元素,并且它还返回这个元素。

L = ['Adam','Lisa','Bart','Paul']
L.pop()   #输出Paul
print L   #['Adam','Lisa','Bart']

如果想要删除的元素不是最后一个,则需要指定它的索引

# 比如想要删除Bart
L = ['Adam','Lisa','Bart','Paul']
L.pop(2)   #输出Bart
print L   #['Adam','Lisa','Paul']

还有del()方法

fan = [["liz",12],
        ["tom",23],
        ["Lisa",24]]
del(fan[1])
print fan
替换元素

对list的某一个索引赋值,就可以直接用新的元素替换掉原来的元素,list包含的元素个数保持不变。

L = ['Adam', 'Lisa', 'Bart']
#想要将Adam和Bart的位置变换一下
L[0] = 'Bart'
print L  # 输出['Bart', 'Lisa', 'Bart']
L[-1] = 'Adam'
print L  # 输出 ['Bart', 'Lisa', 'Adam']
tuple

tuple和list非常类似,但是tuple一旦初始化就不能修改。访问也是通过下标,用小括号() 表示。

t = ('Adam','Lisa','Bart')
print t    # 输出('Adam','Lisa','Bart')

这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法。

获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素。

创建单元素tuple

包含0个元素的tuple,也就是空tuple,直接用()表示。

t = ()
print t  #输出()

为避免歧义,单元素tuple要多加一个逗号“, ”

t = (1,)
print t  # 输出 (1,)

多元素 tuple 加不加这个额外的“,”效果是一样的:

t = (1, 2, 3,)
print t   # 输出 (1, 2, 3)
“可变”的tuple

t有3个元素,'a','b'和一个list:['A', 'B']。list作为一个整体是tuple的第三个元素。

t = ('a','b',['A','B'])
print t[2]  #   输出 ['A','B']

将list的两个元素改一改

不是说tuple一旦定义后就不可变了吗?怎么现在又变了?


tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每一个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

if语句

直接上例子:

age  = 20
if age >= 18:
    print 'Your age is',age
    print 'adult'
print 'END'

注意:Python的缩进规则,具有相同缩进的代码被视为代码块,进行缩进的时候,记住千万不要混用tab和空格,只许坚持用一种。
if语句后接表达式,然后用: 表示代码块开始

如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车:

>>> age = 20
>>> if age >= 18:
...     print 'your age is', age
...     print 'adult'
...
your age is 20
adult
if-else
score = 55
if score >= 60:
    print 'passed'
else:
    print 'failed'
if-elif-else
score = 85
if score >= 90:
    print 'excellent'
elif score >= 80:
    print 'good'
elif score >= 60:
    print 'passed'
else:
    print 'failed'
for循环
L = ['Adam', 'Lisa', 'Bart']
for name in L:
    print name
while

计算100以内奇数的和

sum = 0
x = 1
while x < 100:
    sum = sum + x
    x += 2
print sum
break退出循环

用for循环或者while循环,如果要在循环体内直接退出循环,可以使用break语句。

# 计算1至100的整数和
sum = 0
x = 1
while True:
    sum = sum + x
    x = x + 1
    if x > 100:
        break
print sum
continue继续循环

在循环过程中,可以用break退出当前循环,还可以用continue跳过后续循环代码,继续下一次循环。

# 计算0-100中的奇数的和
sum = 0
x = 0
while True:
    x = x + 1
    if x > 100:
        break
    if x % 2 == 0:
        continue
    sum = sum + x
print sum
多重循环

对100以内的两位数,请使用一个两重循环打印出所有十位数数字比个位数数字小的数,例如,23(2 < 3)。

for x in [1,2,3,4,5,6,7,8,9]:
    for y in [1,2,3,4,5,6,7,8,9]:
        if x < y:
            print x * 10 +y
dict
d = {
    'Adam':95,
    'Lisa':85,
    'Bart': 59,
    'Paul':75
}

访问dict

使用d[key]的形式来查找对应的value。

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}
print 'Adam:',d['Adam']
print 'Lisa:',d['Lisa']
print 'Bart:',d['Bart']
# 使用dict本身提供的一个get方法,在Key不存在的时候,返回None
print d.get('Bart')  #输出59
print d.get('Paul')  #输出None  
# 判断key是否存在,用 in 操作符
if 'Lisa' in d:
    print d['Lisa']
list的切片
# 索引    0     1     2     3    4    5     6     7
fam = ['ware', 12, 'Tom', 122, 'DS', 13, 'Lisa', 121]
# [起点:终点]  起点对应的包含,终点对应的不包含
print fam[3:5]  # 输出[122,'DS']
print fam[1:4]   # 输出[12, 'Tom', 122]
# 没有指定起点
print fam[:4]  # 输出 ['ware', 12, 'Tom', 122]
# 没有指定终点
print fam[5:]  #输出 [13, 'Lisa', 121]
  
关于list
将x赋给y,拷贝的并不是list 即x的内容,而是x的引用,即地址,x和y在内存中指向的是同一个地址。不管改变x的值,还是y的值,打印出俩者的值都是一样的,因为它们是同一个list。
要想完全创建一个新的list,和x一样的list,可以通过list(x) 或者list的切片方式x[:]
函数

list中的方法

# 获取某个元素的索引
L = ['Lisa','Paul','Bart','Paul']
L.index('Bart') # 输出2 
# 某个元素在list中出现的次数
L.count('Paul')  # 2

str的方法

将字符串的首字母大写
sister = 'lis'
print sister.capitalize()   #输出Lis
# 替换某些字符
sister = sister.replace('s','sa')
print sister   #输出lisa
# 获取某个字母在字符串中的索引
print sister.index('i')   # 1
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,406评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,976评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,302评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,366评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,372评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,457评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,872评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,521评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,717评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,523评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,590评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,299评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,859评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,883评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,127评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,760评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,290评论 2 342

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,545评论 1 118
  • 一、python 变量和数据类型 1.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序...
    绩重KF阅读 1,628评论 0 1
  • 0. 序言 python 是一门脚本语言:封装性强,语法简洁,开发效率高,只用函数open就可以打开一个txt文件...
    付凯强阅读 1,211评论 0 5
  • 最近在慕课网学习廖雪峰老师的Python进阶课程,做笔记总结一下重点。 基本变量及其类型 变量 在Python中,...
    victorsungo阅读 1,654评论 0 5
  • 今天说实话有点不舒服,就这样吧,纪念一下。其实也是很有情感的。
    老爷子l阅读 179评论 0 0