python入门知识
来源:互联网 发布:mysql数据库锁表原因 编辑:程序博客网 时间:2024/05/24 04:37
python 变量和数据类型
http://www.cnblogs.com/linjiqin/p/3608541.html
http://www.cnblogs.com/yueya/p/5811998.html
python 数据类型
print 45678+0x12fd2 print "learn Python in mooc"print 'learn Python in mooc'
print 100<99print 0xff==255
123456
learn Python in mooc
learn Python in mooc
False
True
python print 语句
print 300+100print 400print 'The quick brown fox','jump over','the lazy dog'print 'hello ,','python'
400
400
The quick brown fox jump over the lazy dog
hello , python
python 注释
#print 'hello'
python 变量
a=1;a='hello'print a#下面是错的 好像python不能有指定的数据类型#int b=200#b='python'#print b
python 定义字符串
s = 'Python was started in 1989 by \"Guido\".\n Python is free and easy to learn.'print s
\n 表示换行
\t 表示一个制表符
\\ 表示 \ 字符本身
Python中raw字符串与多行字符串
字符串前面加个r就不需要转义了 但是但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串如果要表示多行字符串,可以用'''...'''表示
r'''.....''' 就可以表示' "这种转义了
print r'\(~_~)/ \(~_~)/'print r'''"To be, or not to be": that is the question.Whether it's nobler in the mind to suffer.'''
\(~_~)/ \(~_~)/
"To be, or not to be": that is the question.
Whether it's nobler in the mind to suffer.
Python中Unicode字符串
# -*- coding: utf-8 -*-print '''静夜思 床前明月光, 疑是地上霜。 举头望明月, 低头思故乡。''' print '中文' #这个1为什么会出错 不是已经是utf-8的编码了吗
Python中整数和浮点数
print 2.5 + 10.0 / 4print 7.5/8print 11/4print 11%4print 11.0/4
5.0
0.9375
2
3
2.75
python 布尔运算
除了与java 相同的与 ,或,非运算外Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True
True and 'a=T' 计算结果是 'a=T'
继续计算 'a=T' or 'a=F' 计算结果还是 'a=T'
要解释上述结果,又涉及到 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。
a = 'python'print 'hello,'and a or 'world'b = ''print 'hello,'and b or 'world'pythonworld
python List(对比JAVA的List集合的遍历,索引,表示等)
list是一种有序的集合,可以随时添加删除其中的元素使用的[] 把list所有的元素都括起来,就是一个list对象
由于python是动态语言,所以list中的元素并不要求都必须是同一种数据类型
(可以对比java中的List集合 打印出来也是使用[] 括起来的)
Python按照索引(倒序索引)访问list
L = [95.5,85,59]print L[0]print L[-1]
result:
95.5
59
python之list 添加新元素
L = ['Adam', 'Lisa', 'Bart']L.append('Paul')#这个方法总是添加到list末尾L.insert(0,'FirstOne')#这个方法可以添加指定的索引位置print L
python之list 删除元素
L = ['Adam', 'Lisa', 'Paul', 'Bart']L.pop()#如果参数为空那就是默认的删除list的最后一个元素L.pop(2)#就是删除索引位置为2的元素print L
result: ['Adam', 'Lisa']
python之list 替换元素
L = ['Adam', 'Lisa', 'Bart']L[-1] ='Adam'L[0] = 'Bart'print L
result:['Bart', 'Lisa', 'Adam']
python tuple
tuple是另外一种有序的列表,中文翻译为“元组”,tuple和list非常类似,但是tuple一旦被创建就不能被修改了(也就是没有所谓的append(),insert(),pop()方法了,也没有什么方法去修改tuple)。
tuple的创建和list唯一不同之处是用() 替代了[]。
获取tuple元素的方式和list是一样的,可以用t[0],t[1]等索引方式访问元素,但是并不能复制成别的元素(也就是所谓的修改元素)
Python之创建单元素tuple
t = ('Adam',) 需要在后面加一个(,),不然的话就会被解析成一个括号
表示的是算数的优先级:t=(1) 打印出来结果就是一个整数1
Python之“可变”的tuple
t = ('a', 'b', ['A', 'B'])print t[2]t[2][0]=1print t
result:
['A', 'B']
('a', 'b', [1, 'B'])
tuple一开始指向的list并没有改成别的list,
所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变
python 条件判断和循环
在这之前特别注意的是python代码的缩进规则缩进请严格按照Python的习惯写法:
4个空格,不要使用Tab,更不要混合Tab和空格,
否则很容易造成因为缩进引起的语法错误。
如果你在Python交互环境下敲代码
还要特别留意缩进,并且退出缩进需要多敲一行回车
if
score = 55if score >=60: print 'passed' print 'yes'print 'END'
其中3,4行构成了一个代码块而第5行不是
if-else
score = 55if score >=60: print 'passed'else: print 'failed' #result failed
if-elif-else
score = 85if score>=90: print 'excellent'elif score>=80: print 'good'elif score>=60: print 'passed'else: print 'failed' #result good
for循环
遍历list tuple
L = [75, 92, 59, 68]sum = 0.0for x in L: sum=sum+xprint sum / 4 #2500
while循环
sum = 0x = 1while x<100: sum = sum+x x=x+2print sum #2500
sum = 0x = 1while True: if x>100: break sum = sum+x x=x+2print sum #2500
continue继续循环
sum = 0x = 0while True: x = x + 1 if x>100: break if x%2==0: continue sum =sum+xprint sum #2500
多重循环
for x in ['A', 'B', 'C']: for y in ['1', '2', '3']: print x,y
result:
A 1
A 2
A 3
B 1
B 2
B 3
C 1
C 2
C 3
for x in ['A', 'B', 'C']: for y in ['1', '2', '3']: print x+y
如果输出使用+链接 而不是, 结果是不样的
+链接中间没有空格
A1
A2
A3
B1
B2
B3
C1
C2
C3
Python之dict(字典)(类似于java的map集合)
花括号 {} 表示这是一个dict,
然后按照 key: value, 写出来即可。
最后一个 key: value 的逗号可以省略。
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59}>>>len(d) # result 3 获取集合长度
python之访问dict
d[key] 的形式来查找对应的 value当访问的key值不存在对应的value时就会报错所以:
一:
if 'Paul' in d: print d['Paul'] #不存在返回false
二:
print d.get('Bart') #不存在返回None
python之dict的特点
dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
由于dict是按 key 查找,所以,在一个dict中,key不能重复。
dict的第二个特点就是存储的key-value序对是没有顺序的!
dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key
Python之dict的更新(update insert)
d = { 95: 'Adam', 85: 'Lisa', 59: 'Bart'}d[72]='Paul'print d[72]d[72]='Paul2'print d[72]
result
Paul
Paul2
python之遍历dict
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59}for key in d: print key,':',d[key]
result:
Lisa : 85
Adam : 95
Bart : 59
Python之set(类似于Java的set集合 无序不重复)
dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。
有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,这时,set就派上用场了。
set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
s = set(['Adam','Lisa','Bart','Paul'])print sresult:set(['Lisa', 'Paul', 'Adam', 'Bart'])
python之访问set
由于set存储的是无序集合,所以不能通过索引来访问
访问 set中的某个元素实际上就是判断一个元素是否在set中。
>>> s = set(['Adam', 'Lisa', 'Bart', 'Paul'])>>> 'Bart' in s
True
>>> 'bart' in s
False
大小写很重要
python之set的特点
set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。
set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
最后,set存储的元素也是没有顺序的。
months = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])x1 = 'Feb'x2 = 'Sun'if x1 in months: print 'x1: ok'else: print 'x1: error'if x2 in months: print 'x2: ok'else: print 'x2: error'
result:
x1: error
x2: error
python之遍历set
由于 set 也是一个集合,所以,遍历 set 和遍历 list 类似,都可以通过 for 循环实现。
>>> s = set(['Adam', 'Lisa', 'Bart'])>>> for name in s:... print name... LisaAdamBart
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])for x in s: print x[0],':',x[1]
result:
Lisa : 85
Adam : 95
Bart : 59
python之更新set(including insert delete)
s = set(['Adam', 'Lisa', 'Paul'])L = ['Adam', 'Lisa', 'Bart', 'Paul']for name in L: if name in s: s.remove(name) else: s.add(name)print s
result:set(['Bart'])
所以用add()可以直接添加,而remove()前需要判断。
python之函数
如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。
return None可以简写为return。
编写一个函数计算list的平方和
def square_of_sum(L): sum=0 for x in L: x=x*x sum=x+sum return sumprint square_of_sum([1, 2, 3, 4, 5])print square_of_sum([-5, 0, 5, 15, 25])
result:55
900
python之函数返回多值
import mathdef quadratic_equation(a, b, c): # s=b*b-4*a*c # x1 =(-b+math.sqrt(s))/2*a # x2 =(-b-math.sqrt(s))/2*a # return x1,x2 t = math.sqrt(b * b - 4 * a * c) return (-b + t) / (2 * a),( -b - t )/ (2 * a)print quadratic_equation(2, 3, 0)print quadratic_equation(1, -6, 5)
result:
(0.0, -1.5)
(5.0, 1.0)
用print打印返回结果,原来返回值是一个tuple!
但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,
所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
python之递归函数
def move(n, a, b, c): if n ==1: print a, '-->', c return move(n-1, a, c, b) print a, '-->', c move(n-1, b, a, c)move(4, 'A', 'B', 'C')
result:
A --> B
A --> C
B --> C
A --> B
C --> A
C --> B
A --> B
A --> C
B --> C
B --> A
C --> A
B --> C
A --> B
A --> C
B --> C
python之定义默认参数
def greet(name='world'): print 'Hello, ' + name + '.'greet()greet('Bart')
result:
Hello, world.
Hello, Bart.
python之定义可变参数函数
def average(*args): sum =0.0 if len(args)==0: return sum for x in args: sum=sum+x return sum/len(args)print average()print average(1, 2)print average(1, 2, 2, 3, 4)
result:
0.0
1.5
2.4
python之list切片
记住倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引。(这点就像java的substring()方法一样 包括起始不包括结尾)
利用倒序切片对 1 - 100 的数列取出:
* 最后10个数;
* 最后10个5的倍数。
L = range(1, 101)print L[-10:]print L[-46::5]
python之对字符串进行切片
字符串 'xxx'和 Unicode字符串 u'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
把字符串首字母变成大写
def firstCharUpper(s): return s[:1].upper()+s[1:]print firstCharUpper('hello')print firstCharUpper('sunday')print firstCharUpper('september')
Hello
Sunday
September
python之迭代
在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。
注意: 集合是指包含一组元素的数据结构,我们已经介绍的包括:
1. 有序集合:list,tuple,str和unicode;
2. 无序集合:set
3. 无序集合并且具有 key-value 对:dict
找到在1-100以内7的倍数
for i in range(1,101): if i%7==0: print i else: continue
python之索引迭代
Python中,迭代永远是取出元素本身,而非元素的索引。
对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办?
方法是使用 enumerate() 函数:
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']>>> for index, name in enumerate(L):... print index, '-', name
...
0 - Adam
1 - Lisa
2 - Bart
3 - Paul
使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。但是,这不是 enumerate() 的特殊语法。实际上,enumerate() 函数把:
['Adam', 'Lisa', 'Bart', 'Paul']
变成了类似:
[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]
因此,迭代的每一个元素实际上是一个tuple:
for t in enumerate(L): index = t[0] name = t[1] print index, '-', name
zip()函数可以把两个 list 变成一个 list:
>>> zip([10, 20, 30], ['A', 'B', 'C'])[(10, 'A'), (20, 'B'), (30, 'C')]
打出名字+名次
L = ['Adam', 'Lisa', 'Bart', 'Paul']S=zip(range(1,len(L)+1),L)for index, name in S: print index, '-', name
result:
1 - Adam
2 - Lisa
3 - Bart
4 - Paul
迭代dict的value
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }print d.values()# [85, 95, 59]for v in d.values(): print v# 85# 95# 59
可以使用dict.values()或者dict.itervalues() 两个效果完全一样
两个方法有何不同之处呢?
1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。
如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。
迭代dict的key和value
我们了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和value?答案是肯定的。
首先,我们看看 dict 对象的 items() 方法返回的值:
>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }>>> print d.items()[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:
>>> for key, value in d.items():... print key, ':', value... Lisa : 85Adam : 95Bart : 59
和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。
python之生成列表
>>> L = []>>> for x in range(1, 11):... L.append(x * x)... >>> L[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
生成列表
>>> [x * x for x in range(1, 11)][1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
range(1, 100, 2) 可以生成list [1, 3, 5, 7, 9,...]
range()函数包括起始,不包括末尾也就是生成的最大数为99
请利用列表生成式生成列表 [1x2, 3x4, 5x6, 7x8, ..., 99x100]
print [x*(x+1) for x in range(1,100,2)]
复杂表达式:
tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()]print '<table>'print '<tr><th>Name</th><th>Score</th><tr>'print '\n'.join(tds)print '</table>'
注:字符串可以通过 % 进行格式化,用指定的参数替代 %s。字符串的join()方法可以把一个 list 拼接成一个字符串。
把打印出来的结果保存为一个html文件,就可以在浏览器中看到效果了:
<table border="1"><tr><th>Name</th><th>Score</th><tr><tr><td>Lisa</td><td>85</td></tr><tr><td>Adam</td><td>95</td></tr><tr><td>Bart</td><td>59</td></tr></table>
在生成的表格中,对于没有及格的同学,请把分数标记为红色。
提示:红色可以用 <td style="color:red"> 实现。
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }def generate_tr(name, score): if score<60: return '<tr><td>%s</td><td style="color:red">%s</td></tr>' % (name, score) return '<tr><td>%s</td><td>%s</td></tr>' % (name, score)tds = [generate_tr(name,score) for name, score in d.iteritems()]print '<table border="1">'print '<tr><th>Name</th><th>Score</th><tr>'print '\n'.join(tds)print '</table>'
条件过滤:
>>> [x * x for x in range(1, 11) if x % 2 == 0][4, 16, 36, 64, 100]
遍历之后进行条件过滤最后才是x.upper()
#def toUppers(L): #for x in L: # if(isinstance(x,str)): # return upper(x) #return [x]def toUppers(L): return [x.upper() for x in L if isinstance(x, str)]print toUppers(['Hello', 'world', 101])result:['HELLO', 'WORLD']
多层表达式
>>> [m + n for m in 'ABC' for n in '123']['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
翻译成循环代码就像下面这样:
L = []for m in 'ABC': for n in '123': L.append(m + n)
找出对称的三位数:
print [100*n1+10*n2+n3 for n1 in range(1,10) for n2 in range(0,10) for n3 in range(0,10) if n1==n3]
阅读全文
0 0
- python入门知识总结
- python入门知识
- Python入门知识总结
- 【Python爬虫】入门知识
- Python 入门知识
- python入门知识
- Python简单入门语法python基础入门知识
- Python类的基础入门知识
- Python类的基础入门知识
- Python基础学习-爬虫入门知识
- Python爬虫入门 | 3 爬虫必备Python知识
- 2014/9/27 22:00 Python入门知识了解
- hjr教程-Python(一):环境搭建与入门知识
- Data Analysis学习笔记 --- Python数据分析入门知识
- Python 爬虫学习 —— Scrapy 入门知识学习
- 入门知识
- [Django入门知识浅介]关于Python与Django的一些背景知识
- python知识
- 在studio创建selector文件 用于改变RadioButton选择背景颜色
- levelDB学习
- 2017 Noip 退役记
- shasum check failed解决办法
- Linux版ORACLE服务重启步骤
- python入门知识
- Android Retrofit+Okhttp断点续传
- php打开本地exe程序,js打开本地exe应用程序,并传递相关参数
- POJ 3347 Kadj Squares <几何>
- MySQL5.7 GTID在线开启与关闭
- hcash超级现金公布区块链中量子密码测试版将于近期问世
- hdu2544-最短路径spaf
- SEO快排服务:快速上首页的背后
- You need to use a Theme.AppCompat theme (or descendant) with this activity.