Python入门学习笔记

PYTHON 教程 : http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000



输入输出 :

Linux下直接输入python,即进入Python编译界面

>>> print ‘hello,world‘                             输出,多行的时候使用 ‘‘‘ 代替 "
hello, world
>>> name = raw_input(‘please enter your name: ‘)    输入,raw_input得到的是字符串,要转换的话需要强制转换 :
int(raw_input())

please enter your name:

>>> name

Michael



Python基础:
# print absolute value of an integer:
a = 100                                            对缩进有严格要求,对大小写敏感
if a >= 0:
    print a
else:
    print -a

字符串:

字符串的转义:如‘,转义加反斜杠 \‘,Python还允许用 r‘‘ 来表示 ‘‘
的内容不转义

print ‘‘‘line1

line2

line3‘‘‘                                                                             
?使用‘‘‘.....‘‘‘来表示多行内容

java是静态语言,Python是动态语言

a = 33

a =
‘abc‘                                                                            在Python中,变量a可以不指定类型,随意赋值,java就不行

10 / 3  -->
3                                                                       整数除法

10.0 / 3 -->
3.3333                                                            浮点数除法,得出的就是浮点数

10 % 3 -->
1                                                                      取余也是%

字符串转换

%s                                                                                      用于字符串,但是任意的数值都可以转换成字符串

%d、%f、%x                                                                      分别用于整数、浮点数、十六位进制数

                                                   
如果字符串里面有%,需要再加一个%来转义,即 %% = %
?

字符串的其他操作

str.find(substr)                    查找子字串的索引值,没有则返回-1,还能指定位置 find(substr, start,
end)

从右往左查找:rfind()

substr = str[0:3]                  切割字符串,实际字符串也是一个list,可以用list的方法         

?


List列表 和
Tuple 元组:

列表 List:

>>> p = [‘asp‘, ‘php‘]

p[0]  -->
‘asp‘                                                                  
索引也是从0开始,倒数的从-1开始 .

p.append(‘dd‘) --> [‘asp‘, ‘php‘,
‘dd‘]                                    添加元素

p.insert(1, ‘jack‘)  -->[‘asp‘, ‘jack‘, ‘php‘, ‘dd‘]                        插入元素

p.pop(
)  -->‘php‘                                                              
 pop( ),删除最后一个元素,或pop(-1)

len(p)  -->
2                                                                        长度 

元组
Tuple:
                                                                     tuple 也是一种list, 和 list 非常相似,但是 tuple
一旦初始化就不能修改

# tuple
不可变,代码更安全,但是要从一开始就确定元素,能用tuple的尽量用tuple代替list

#
这时候,要是list作为tuple的一个元素,list内容是可以改变的,因为tuple存放的不过不过是list的地址

>>> t = (2,
4)                                                                     注意,是括号


条件判断和循环

age = 3                                    

if age >= 18:                                 注意冒号

print ‘your age is‘,age                   缩进的两行内容都是执行的

print ‘adult‘

#
elif 是 else if
的缩写

names = [‘Tom‘, ‘Marry‘, ‘Jay‘]

for name in names:                            for...in...
循环遍历

print name

range(5) --> [0,1,2,3,4]                     
range 生成 [0, 5)
的序列


Dict 字典 和 Set
集合:

dict 全称 dictionary,相当于map

>>> d = {1:a, 2:b, 3:c}                      
key : value
,大括号

>>> d[1]                                     
取出,也可以用get :
d.get(1),如果key不存在则返回None,key in dict
也可以判断key是否存在于dict

a

>>> d[1] =
1                                  放入

>>> d.pop(1)                                 
删除key为1的键值对

# key
必须为不可变对象

Set 集合,存储的元素不重复

>>> s = set([1, 2, 3])                       
借助list放入,加入list中有重复元素,set会自动过滤掉重复元素

>>> s.add(4)                                 
添加

>>> s.remove(4)                              
删除


函数:

Python 的内置函数 https://docs.python.org/2/library/functions.html#abs

def my_abs(x):

if not isinstance(x, (int,
float)):       
isinstance是内置函数,类型检查

raise TypeError(‘bad operand
type‘)   
抛出参数错误异常

if x >= 0:

return
x                               返回结果,无结果可以写 return
None

else:

return -x

x, y = move(10,
30)                           
这里的move函数返回两个值,实际上是一个tuple,在语法上,返回一个tuple可以省略括号

默认参数

def my_method(x, y, z=4,
m=5):                 这里的方法可以这样调用:my_method(1, 2), my_method(1, 2, 3),
my_method(1, 2,
m=6)

...                                        #
注意,必选参数在前,默认参
数在后 ,而且默认参数必须指向不可变对象!!  

可变参数

def
calc(*numbers):                            *numbers 
是可变参数,参数传0个,1个,3个都行

sum = 0

for n in numbers:                         
 numbers接收到的是一个tuple

sum = sum + n;                        
#如果已经有一个tuple或者list需要传入,可以这么调用
calc(*args)

return sum

关键字参数:

def person(name, age, **kw):                  
**kw
是关键字参数,这些参数会自动组装成一个dict

print ‘name:‘, name, ‘age:‘, age, ‘other:‘, kw

>>> preson(‘Tom‘, 25, gender=‘M‘,
job=‘Engineer‘)          #这里的kw可以不输,也可以输多个,要是传入一个dict,就可以这么传
**kw

name: Tom age: 25 other: {‘gender‘:‘M‘,
‘job‘:‘Engineer‘}  
输出的就是一个dict


高级特性:

切片

L = [‘age‘, ‘gender‘, ‘name‘, ‘addr‘]

L[:3] 或者 L[0:3] ->
[‘age‘, ‘gender‘, ‘name‘]   开始的0的话,可以不写,取的是[0,3),不包括3

L[-2:] 或者       ->
[‘name‘, ‘addr‘]            按顺序取后面两个

L[:4:2]           -> [‘age‘, ‘name‘]            
前四个数,每2个取一个

L[::2]            -> [‘age‘, ‘name‘]            
所有数,每2个取一个

L[:]              -> [‘age‘, ‘gender‘, ‘name‘, ‘addr‘]  
所有数

# 字符串 和 tuple
也是list,因此也可以使用切片

迭代:

dict = {‘a‘:1, ‘b:2‘, ‘c‘:3}

for key in dict   -->  a, b, c                 
  dict
默认迭代的是key

for value in
dict.itervalues()                    itervalues()方法可以迭代dict的value

for k, v in dict.iteritems()                     
iteritems()方法可以同时迭代dict的key和value

# 只要是可迭代对象,就可以用for...in,判断迭代对象 :
isinstance(‘abc‘, Iterable) (需要先导入 from Collections import
Iterable)

# 判断一个对象是否List、tuple、dict还可以用这种方法
type(x) ==
list,type取的是类型

for i, value in enumerate([‘A‘, ‘B‘, ‘C‘])       
使用enumerate 方法打印序号
i

print i, value

0 A

1 B

2 C

列表生成式:

for x in range(1,11) -->
[1...10]省略写            用range生成1到10的列表

[x * x for x in range(1,11) if x % 2 ==
0]        列表里面写逻辑,生成的元素 x*x
要放到前面

--> [4, 16, 36, 64, 100]

[m + n for m in ‘ABC‘ for n in ‘XYZ‘]            
得出AX、AY这样的 3*3
个组合

>>> import os

>>> [d for d in os.listdir(‘.‘)]                 
os.listdir可以列出文件和目录,如果目录有中文,用os.listdir(u‘/中文‘)

>>> L = [‘Hello‘, ‘Mine‘]

>>> [s.lower() for s in L]                       
输出L,但是里面的全部变成小写,非字符串没有 lower()
方法

# 拓展:把含有字符串和数字的列表改成小写,可以这么写 [s.lower()
if isinstance(s, str) else s for s in
L]

生成器:

>>> g = (x * x for x in
range(10))               
生成器与列表的区别,前者是 (), 后者是
[]

>>>
g.next()   
                                                                      生成器保存的实际是 算法,  每次调用 next()
方法可以打印下一个值,直到最后一个抛错

# 一旦生成器建成后,基本不会使用 next() 方法,而是用迭代
for...in

>>> def
func():                                  
  生成器的另一种产生方法,带有yield的函数

...    n =
20;                                    
生成器执行next()方法时,每次在yield处返回,下一个next()时,继续从上次记录位置执行

...    while(n >
0):

...        yield
n

...        n = n
-1


函数式编程:

高阶函数:

>>> def
f(x):                                     这里定义一个函数

...    return x*x

...

>>> map(f, [1,2,3,4,5])                          
这里map()作为高阶函数,接收函数作为参数的函数称为高阶函数

[1,4,9,16,25]                                    
这里的f,写f是指函数对象本身,写f(1)时是调用函数,并期待返回1

>>> def fn(x, y):

...    return x + y                              
这里的fn函数实现了累加

...

>>> reduce(fn, [1,2,3,4,5])                      
reduce()高阶函数,里面的fn()函数需要两个参数

15

# map(int, ‘12345‘) --> [1, 2, 3, 4,
5],因为字符串也是一个序列

排序算法:

>>> sorted([10, 2,
3])                            sorted()也是一个高阶函数,默认按小到大排序

[2, 3, 10]

>>> def cmp(x,
y):                                
这里定义一个倒序的函数,要想字母排序倒序可以自己定义

...    if(x > y):

...        return -1

...    elif (x < y):

...        return 1

...    return 0

>>> sorted([10, 2, 3],
cmp)                        cmp作为函数名传入就可以实现倒序了

[10, 3, 2]

时间: 2024-09-30 04:33:10

Python入门学习笔记的相关文章

Python入门 学习笔记 (二)

今天学习了一些简单的语法规则,话不多说,开始了: 二.数据类型 常用数据类型中的整形和浮点型就不多说了. 1.字符串 字符串是用 ‘’ 或者“” 括起来的任意文本,比如’dfjksj’,”tijdkf”. 如果字符串中有’或者"都需要使用\转译,比如,Lily said "I’m OK” 书写方式为:’Lily said \”I\’m OK\"' 也可以使用raw字符串,如果一个字符串中包含很多需要转义的字符,对每个需要转义的字符都做操作很复杂,这时候就需要使用raw字符串,

Python 入门学习笔记

安装和运行 官网下载安装包https://www.python.org/downloads/mac-osx/下载完直接安装即可 运行打开 terminal,输入命令 python,进入 python 环境(类似输入 node 进入 node 环境) 退出 python 环境 exit() >>> python Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 12:01:12) [GCC 4.2.1 (Apple Inc. build 566

Python入门 学习笔记

十六进制:0x123 布尔运算:and, or, not 空值:None 注释:# raw字符串不需要转义:r'XXX' 多行字符:'''XXX''' 多行字符+raw字符串:r'''XXX''' Unicode字符:u'中文' 如果中文字符串在Python环境下遇到UnicodeDecodeError,这是因为.py文件保存的格式有问题.可以在第一行添加注释: # -*- coding: utf-8 -*- list:L = [ a, b, c ] list添加新元素:L.pop(d), L.

Python 实现 CNKI批量下载 和FireFox Extension 入门学习笔记

?                                 Python 实现 CNKI批量下载 和FireFox Extension 入门学习笔记? 由于需要也是为了督促自己学习新的东西,我原本想要尝试着写一个爬虫程序,能够在cnki上自动得将论文进行批量下载,学习过程中遇到了诸多情况,cnki也真是专业,不得不佩服cnki的强大. 下面进入正题: 学习.实验环境:ubuntu 14.04 工具:Eclipse ,  FireFox, FireBug,HttpFox 编程语言:pyth

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

Python Click 学习笔记(转)

原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发的一个小工具需要在命令行环境下操作,就写个学习笔记. 国际惯例,先来一段 "Hello World" 程序(假定已经安装了 Click 包). # hello.py import click @click.command() @click.option('--count', default

Hadoop入门学习笔记---part4

紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操作,前提是按照<Hadoop入门学习笔记---part2>中的已经在虚拟机中搭建好了Hadoop伪分布环境:并且确定现在linux操作系统中hadoop的几个进程已经完全启动了. 好了,废话不多说!实际的例子走起. 在myeclipse中新建一个java工程: 在项目工程中新建一个lib包用于存放

Hadoop入门学习笔记---part1

随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力,好好做.正是因为选题和hadoop有关,现在正式开始学习hadoop.将笔记整理于此,希望与志同道合的朋友共同交流. 作者:itRed 邮箱:[email protected] 个人博客链接:http://www.cnblogs.com/itred 好了,废话不多说.进入正题!开始hadoop的学习

汇编入门学习笔记 (六)—— si、di,双重循环

疯狂的暑假学习之  汇编入门学习笔记 (六)-- si.di,双重循环 参考: <汇编语言> 王爽 第7章 1. and和or指令,与[bx+idata] and和or,就不多说了. [bx+idata] 这样写是可以的,某些情况下,比较方便. [bx+idata] 也可以写成 idata[bx] 直接见例子: 把'ABcde' 跟 'fGHig' 都改成大写(ASCII中大写字母与小写字母二进制中,只有第五位不同,大写字母是0,小写字母是1) assume cs:code,ds:data d