Python基础知识笔记

运行一个脚本后再进入交互终端 python -i

使用-i参数

$ echo "#!/usr/bin/env python
import sys" > test.py

$ python -i test.py
>>> sys.path

print的内容禁止转义 \

使用 r' '使单引号中的所有字符禁止转义

>>> print 'x\ny\tz'
x
y   z
>>> print r'x\ny\tz'
x\ny\tz

打印多行 '''...'''

使用\n输入多行时可能不太好阅读,可以通过''' '''三引号的方式来输出多行

>>> print '''line one
... line two
... line three
... '''
line one
line two
line three

常量 PI

在Python中的常量也是一个变量,只不过为了显示这是个常量,约定俗成用大写表示常量
在Python中没有任何机制保证大写的变量不会被更改!

>>> PI = 3.1415926

字符串与数字间的转换(ASCII)

>>> ord('L')
76
>>> chr(76)
'L'

在Python中使用Unicode编码

>>> '中文'
'\xe4\xb8\xad\xe6\x96\x87'
>>> u'中文'
u'\u4e2d\u6587'
>>> print u'中文'
中文
>>> print u'\u4e2d\u6587'
中文

Unicode与禁止转义连用 print ur'...'

>>> print u'中\t文'
中    文
>>> print ur'中\t文'
中\t文
>>> ur'中\t文'
u'\u4e2d\\t\u6587'

Unicode与utf-8字符编码间的转换

Unicode 2 UTF-8

>>> u'ABC'
u'ABC'
>>> u'ABC'.encode('utf-8')
'ABC'
>>> u'中文'
u'\u4e2d\u6587'
>>> u'中文'.encode('utf-8')
'\xe4\xb8\xad\xe6\x96\x87'

UTF-8 2 Unicode

>>> '\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
u'\u4e2d\u6587'
>>> print '\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
中文
>>> print u'\u4e2d\u6587'
中文
>>>
>>> 'ABC'.decode('utf-8')
u'ABC'
>>> print 'ABC'.decode('utf-8')
ABC
>>> print u'ABC'
ABC

Python文件中使用中文的声明 print u'...'

#!/usr/bin/env python
#coding=utf-8
print u'中文'

字符串格式化(占位符)

常见的占位符:

  • %d 整数
  • %f 浮点数
  • %s 字符串
>>> print 'Hi %s' % 'ps'
Hi ps
>>> print 'Hi %s, I have %d questions to ask you' % ('ps', 59)
Hi ps, I have 59 questions to ask you

对Unicode字符串进行占位时,字符编码需要前后保持一致

>>> print u'Hi %s, I have %d questions to ask you' % (u'ps', 59)
Hi ps, I have 59 questions to ask you

对占位符转义%%-->'%'

>>> print "update %d%" % 59
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: incomplete format
>>> print "update %d%%" % 59
update 59%

列表

>>> testlist = ['Apple', 'Microsoft', 'Samaung']
>>> testlist
['Apple', 'Microsoft', 'Samaung']

取值 list[index]

列表中最后一个元素的位置是len(testlist) - 1 or testlist[-1]

以此类推,倒数第二个元素是testlist[-2]

>>> testlist
['Apple', 'Microsoft', 'Samaung']
>>> len(testlist)
3
>>> len(testlist) - 1
2
>>> testlist[len(testlist) - 1]
'Samaung'
>>> testlist[-1]
'Samaung'
>>> testlist[-2]
'Microsoft'

追加 append(value)

>>> testlist
['Apple', 'Microsoft', 'Samaung']
>>> testlist.append('lastvalue')
>>> testlist
['Apple', 'Microsoft', 'Samaung', 'lastvalue']

插入 insert(index, value)

>>> testlist
['Apple', 'Microsoft', 'Samaung', 'lastvalue']
>>> testlist.insert(1, 'secondvalue')
>>> testlist
['Apple', 'secondvalue', 'Microsoft', 'Samaung', 'lastvalue']

删除末尾及指定位置的元素 pop(index)

>>> testlist
['Apple', 'secondvalue', 'Microsoft', 'Samaung', 'lastvalue']
>>> testlist.pop()
'lastvalue'
>>> testlist
['Apple', 'secondvalue', 'Microsoft', 'Samaung']
>>> testlist.pop(1)
'secondvalue'
>>> testlist
['Apple', 'Microsoft', 'Samaung']

替换元素

#直接覆盖
>>> testlist
['Apple', 'Microsoft', 'Samaung']
>>> testlist[2] = 'Google'
>>> testlist
['Apple', 'Microsoft', 'Google']
``

## 二维数组

​```python
>>> testlist = [['iPhone', 'iPad', 'iMac'], 'Microsoft', 'Google']
>>> testlist
[['iPhone', 'iPad', 'iMac'], 'Microsoft', 'Google']
>>> len(testlist)
3
>>> testlist[0][1]
'iPad'

元组

单个元素的元组

>>> testtuple = ('apple')
>>> testtuple
'apple'
>>> type(testtuple)
<type 'str'>
>>> testtuple = ('apple', )
>>> testtuple
('apple',)
>>> type(testtuple)
<type 'tuple'> 

“可变元组”

一般情况下元组是不可变的数据结构,如果需要实现让元组可变,可以在元组中加入列表来实现

>>> testtuple = (['iPhone', 'iPad', 'iMac'], 'Microsoft', 'Google')
>>> testtuple
(['iPhone', 'iPad', 'iMac'], 'Microsoft', 'Google')
>>> testtuple[0].append('iPod')
>>> testtuple
(['iPhone', 'iPad', 'iMac', 'iPod'], 'Microsoft', 'Google')
>>> testtuple[0][2] = 'MBP'
>>> testtuple
(['iPhone', 'iPad', 'MBP', 'iPod'], 'Microsoft', 'Google')
#元组的指向并没有变,所以这个元组可以认为仍然没有变化,变的是元组中list的元素

if判断语句

基础语法

>>> results = 100
>>> if results < 0 or results > 100:
...     print "OMG!!!"
... elif 0 <= results < 60:
...     print "Fail!!!"
... elif 60 <= results < 80:
...     print "OK!!!"
... elif results >= 80 and results <=100:
...     print "good!!!"
... else:
...     print "Impossible!!!"
... 
good!!!

简写

只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False

>>> x = ''
>>> x
''
>>> if x:
...     print 'not null'
... else:
...     print 'null'
... 
null

循环

for...in...

>>> testtuple = (['iPhone', 'iPad', 'iMac'], 'Microsoft', 'Google')
>>> for t in testtuple:
...     print t
... 
['iPhone', 'iPad', 'iMac']
Microsoft
Google

while

>>> start = 0
>>> end = 9
>>> while True:
...     print start
...     start = start + 1
...     if start > end:
...         break
... 
0
1
2
3
4
5
6
7
8
9

raw_input

num = raw_input('please input a num:')

字典

基础语法

>>> p = {'apple':'pages', 'microsoft':'word', 'google':'docs'}
>>> p['apple']
'pages'

检查元素是否包含在字典中

>>> p = {'apple':'pages', 'microsoft':'word', 'google':'docs'}
>>> p['apple']
'pages'
>>> 'apple' in p
#查找不到元素会返回None空
>>> p.get('google')
'docs'
>>> p.get('baidu')
>>> 

删除一个key

>>> p.pop('google')
'docs'
>>> p
{'apple': 'pages', 'microsoft': 'word'}

in关键字

#判断一个元素是否包含在一个字典中
>>> p = {'apple':'pages', 'microsoft':'word', 'google':'docs'}
>>> p['apple']
'pages'
>>> 'apple' in p
True
#判断一个元素是否包含在一个列表中
>>> testlist
[['iPhone', 'iPad', 'iMac'], 'Microsoft', 'Google']
>>> 'Google' in testlist
True

集合

  • 可变集合(set)
  • 不可变集合(frozenset)

集合的基本使用

>>> s = set([1, 2, 3])
>>> s
set([1, 2, 3])
>>> type(s)
<type 'set'>

## 访问集合

集合是无序的,所以不能对集合创建索引或切片的操作,只能循环遍历或使用in、not in来访问或判断集合元素

​```python
>>> s = set([1, 2, 3, 4])
>>> s
set([1, 2, 3, 4])
>>> 2 in s
True
>>> 5 in s
False
>>> for i in s:
...     print i
... 
1
2
3
4

集合中的元素不能重复,集合会自动过滤掉重复的元素

>>> s.add(4)
>>> s
set([1, 2, 3, 4])
>>> s.add(4)
>>> s
set([1, 2, 3, 4])

删除集合中的元素

>>> s.remove(2)
>>> s
set([1, 3, 4])

交集与并集

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
set([2, 3])
>>> s1 | s2
set([1, 2, 3, 4])

子集(真子集)超集(真超集)

子集包含集合本身,真子集不包含本身!如(1,2)的子集有:空集,(1),(2),(1,2).而真子集有:空集,(1),(2)没有(12)

#子集(<=)  真子集(<)
>>> set('shop') < set('bookshop')
True
>>> set('shop') <= set('bookshop')
True
>>> set('bookshop') < set('bookshop')
False
>>> set('bookshop') <= set('bookshop')
True
#超集(>=)  真超集(>)
>>> set('bookshop') > set('shop')
True
>>> set('bookshop') >= set('shop')
True
>>> set('bookshop') > set('bookshop')
False
>>> set('bookshop') >= set('bookshop')
True

异或

>>> s1
set([1, 2, 3])
>>> s2
set([2, 3, 4])
>>> s1 ^ s2
set([1, 4])
>>> s1.symmetric_difference(s2)
set([1, 4])

差补/相对补集

>>> s1
set([1, 2, 3])
>>> s2
set([2, 3, 4])
set([1, 4])
>>> s1 - s2
set([1])
>>> s2 -s1
set([4])

集合的应用: 去重

强制类型转换

字典

字典 2 字符串

>>> d = {'a':1, 'b':2}
>>> d
{'a': 1, 'b': 2}
>>> print type(str(d)), str(d)
<type 'str'> {'a': 1, 'b': 2}

字典 2 元组

>>> d = {'a':1, 'b':2}
>>> d
{'a': 1, 'b': 2}
>>> print tuple(d)
('a', 'b')
>>> print tuple(d.values())
(1, 2)

字典 2 列表

>>> d = {'a':1, 'b':2}
>>> d
{'a': 1, 'b': 2}
>>> print list(d)
['a', 'b']
>>> print list(d.values())
[1, 2]

元组

元组 2 字符串

>>> t = (1, 2, 3)
>>> t
(1, 2, 3)
>>> print type(str(t)), str(t)
<type 'str'> (1, 2, 3)

元组 2 列表

>>> t = (1, 2, 3)
>>> t
(1, 2, 3)
>>> print type(list(t)), list(t)
<type 'list'> [1, 2, 3]

元组 2 集合

>>> t = (1, 2, 3)
>>> t
(1, 2, 3)
>>> print type(set(t)), set(t)
<type 'set'> set([1, 2, 3])

元组不能转成字典

列表

列表 2 字符串

>>> l = [1, 2, 3]
>>> l
[1, 2, 3]
>>> print type(str(l)), str(l)
<type 'str'> [1, 2, 3]

列表 2 元组

>>> l = [1, 2, 3]
>>> l
[1, 2, 3]
>>> print type(tuple(l)), tuple(l)
<type 'tuple'> (1, 2, 3)

列表 2 集合

>>> l = [1, 2, 3]
>>> l
[1, 2, 3]
>>> print type(set(l)), set(l)
<type 'set'> set([1, 2, 3])

列表不能转成字典

字符串

字符串 2 列表

>>> s = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
>>> s
'[[1,2], [3,4], [5,6], [7,8], [9,0]]'
>>> print list(s)
['[', '[', '1', ',', '2', ']', ',', ' ', '[', '3', ',', '4', ']', ',', ' ', '[', '5', ',', '6', ']', ',', ' ', '[', '7', ',', '8', ']', ',', ' ', '[', '9', ',', '0', ']', ']']
>>> print type(eval(s)), eval(s)
<type 'list'> [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]

字符串 2 字典

>>> s = "{1: 'a', 2: 'b'}"
>>> s
"{1: 'a', 2: 'b'}"
>>> print type(eval(s)), eval(s)
<type 'dict'> {1: 'a', 2: 'b'}

字符串 2 元组

>>> s = "([1,2], [3,4], [5,6], [7,8], (9,0))"
>>> print type(eval(s)), eval(s)
<type 'tuple'> ([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))

字符串 2 集合

>>> s = "test"
>>> print type(set(s)), set(s)
<type 'set'> set(['s', 'e', 't'])
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容