python基本操作

os.system("mkdir Test.txt"),

python setup.py install

dir()

以列表形式返回查询对象所有的方法

range()的用法

使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节。这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序。

这里记录一下:

>>> range(1,5) #代表从1到5(不包含5)

[1, 2, 3, 4]

>>> range(1,5,2) #代表从1到5,间隔2(不包含5)

[1, 3]

>>> range(5) #代表从0到5(不包含5)

[0, 1, 2, 3, 4]

>>> range(10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> range(1, 11)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> range(0, 30, 5)[0, 5, 10, 15, 20, 25]>>> range(0, 10, 3)[0, 3, 6, 9]>>> range(0, -10, -1)[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]>>> range(0)[]>>> range(1, 0)[]

range错误返回一个空list

list的slide()方法

再看看list的操作:

array = [1, 2, 5, 3, 6, 8, 4]

#其实这里的顺序标识是

[1, 2, 5, 3, 6, 8, 4]

(0123456)

(-7,-6,-5,-4,-3,-2,-1)

>>> array[0:] #列出0以后的

[1, 2, 5, 3, 6, 8, 4]

>>> array[1:] #列出1以后的

[2, 5, 3, 6, 8, 4]

>>> array[:-1] #列出-1之前的

[1, 2, 5, 3, 6, 8]

>>> array[3:-3] #列出3到-3之间的

[3]

那么两个[::]会是什么那?

>>> array[::2]

[1, 5, 6, 4]

>>> array[2::]

[5, 3, 6, 8, 4]

>>> array[::3]

[1, 3, 4]

>>> array[::4]

[1, 6]

如果想让他们颠倒形成reverse函数的效果

>>> array[::-1]

[4, 8, 6, 3, 5, 2, 1]

>>> array[::-2]

[4, 6, 5, 1]

来源: http://www.cnblogs.com/buro79xxd/archive/2011/05/23/2054493.html

list的sort()方法

元组不可以

x = [4, 6, 2, 1, 7, 9]
x.sort()
print x # [1, 2, 4, 6, 7, 9]
x =[4, 6, 2, 1, 7, 9]
y = sorted(x)
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]

如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢

x =[4, 6, 2, 1, 7, 9]
y = x[ : ]
y.sort()
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]

y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。

二、自定义比较函数

可以定义自己的比较函数,然后通过参数传递给sort方法:

def comp(x, y):
if x < y:
return 1
elif x > y:
return -1
else:
return 0

nums = [3, 2, 8 ,0 , 1]
nums.sort(comp)
print nums # 降序排序[8, 3, 2, 1, 0]
nums.sort(cmp) # 调用内建函数cmp ,升序排序
print nums # 降序排序[0, 1, 2, 3, 8]

来源: http://www.jb51.net/article/52730.htm

相当于是冒泡排序

2、reverse实现降序排序,需要提供一个布尔值:

y = [3, 2, 8 ,0 , 1]
y.sort(reverse = True)
print y #[8, 3, 2, 1, 0]

list的reverse()函数

方法没有返回值,但是会对列表的元素进行反向排序。

aList = [123, ‘xyz‘, ‘zara‘, ‘abc‘, ‘xyz‘];

aList.reverse();print "List : ", aList;

python交换两个值

可以多个变量同时交换

复制代码代码如下:

a=50
b=10
c=20
c,b,a = a,b,c

跟c的指针差不多,改变了指针的指向

删除一个list里面的重复元素

1 >>> l = [1,1,2,3,4,5,4]
2 >>> list(set(l))
3 [1, 2, 3, 4, 5]    

copy一个对象

标准库中的copy模块提供了两个方法来实现拷贝.一个方法是copy,它返回和参数包含内容一样的对象. 
使用deepcopy方法,对象中的属性也被复制

1.import copy
new_list = copy.copy(existing_list)

有些时候,你希望对象中的属性也被复制,可以使用deepcopy方法:

2.import copy
new_list_of_dicts = copy.deepcopy(existing_list_of_dicts)

3.对于dict,你可能见过下面的复制方法:
>>> for somekey in d: 
... d1[somekey] = d[somekey]

4.如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢

x =[4, 6, 2, 1, 7, 9]
y = x[ : ]
y.sort()
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]

y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。

re模块 sub方法介绍

re.sub 函数进行以正则表达式为基础的替换工作

[python] view plain copy

print?

  1. >>> import re
  2. >>> re.search(‘[abc]‘, ‘Mark‘)
  3. <_sre.SRE_Match object at 0x001C1FA8>
  4. >>> re.sub(‘[abc]‘, ‘o‘, ‘Mark‘)
  5. ‘Mork‘
  6. >>> re.sub(‘[abc]‘, ‘o‘, ‘rock‘)
  7. ‘rook‘
  8. >>> re.sub(‘[abc]‘, ‘o‘, ‘caps‘)
  9. ‘oops‘

用Python匹配HTML tag

术语叫贪婪匹配( <.*> ) 非贪婪匹配( <.*?> )例如: <div><span>test</span></div><.*> : <div><span>test</span></div><.*?> : <div>

重复匹配一个正则表达式时候, 例如<.*>, 当程序执行匹配的时候,会返回最大的匹配值

例如:

import re
s = ‘<html><head><title>Title</title>’
print(re.match(‘<.*>’, s).group())

会返回一个匹配<html><head><title>Title</title>而不是<html>

import re
s = ‘<html><head><title>Title</title>’
print(re.match(‘<.*?>’, s).group())

则会返回<html>

<.*>这种匹配称作贪心匹配 <.*?>称作非贪心匹配

来源: http://www.educity.cn/develop/1123833.html

re.search r,match方法介绍

match :只从字符串的开始与正则表达式匹配,匹配成功返回matchobject,否则返回none;
search :将字符串的所有字串尝试与正则表达式匹配,如果所有的字串都没有匹配成功,返回none,否则返回matchobject;(re.search相当于perl中的默认行为)

re.search(w1, s1)

re.match(w2, s1)

random模块

Python中的random模块

Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。

random.random

random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0

random.uniform

  random.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。

  1. printrandom.uniform(10,20)
  2. printrandom.uniform(20,10)
  3. #----结果(不同机器上的结果不一样)
  4. #18.7356606526
  5. #12.5798298022

print random.uniform(10, 20) print random.uniform(20, 10) #---- 结果(不同机器上的结果不一样) #18.7356606526 #12.5798298022

random.randint

  random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b

  1. printrandom.randint(12,20)#生成的随机数n:12<=n<=20
  2. printrandom.randint(20,20)#结果永远是20
  3. #printrandom.randint(20,10)#该语句是错误的。下限必须小于上限。

print random.randint(12, 20) #生成的随机数n: 12 <= n <= 20 print random.randint(20, 20) #结果永远是20 #print random.randint(20, 10) #该语句是错误的。下限必须小于上限。

random.randrange

  random.randrange的函数原型为:random.randrange([start], stop[, step]),从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2),结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。random.randrange(10, 100, 2)在结果上与 random.choice(range(10, 100, 2) 等效。

random.choice

  random.choice从序列中获取一个随机元素。其函数原型为:random.choice(sequence)。参数sequence表示一个有序类型。这里要说明一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence。有关sequence可以查看python手册数据模型这一章。下面是使用choice的一些例子:

  1. printrandom.choice("学习Python")
  2. printrandom.choice(["JGood","is","a","handsome","boy"])       需要指定为list或者tuple,也就是外面要加括号
  3. printrandom.choice(("Tuple","List","Dict"))

print random.choice("学习Python") print random.choice(["JGood", "is", "a", "handsome", "boy"]) print random.choice(("Tuple", "List", "Dict"))

python中如何将两个list合并成一个list

1.直接相加

2。extend()

3.分隔符,至改变前面的数值,代表第二个list的起始位置

python 怎么删除文件

使用os包的remove方法可以删除文件

import osfilename = ‘f:/123.txt‘if os.path.exist(filename):  os.remove(filename)

Python如何copy一个文件?

copyfile(src, dst)

从源src复制到dst中去。当然前提是目标地址是具备可写权限。抛出的异常信息为

list的extend()与append()方法

2.  append() 方法向列表的尾部添加一个新的元素。只接受一个参数。

3.  extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。

>>> mylist.append(‘haha‘)

>>> mylist.extend([‘lulu‘])

if 的牛逼用法

     4, 条件表达式(即"三元操作符")

三元运算符语法为:X if C else Y,只需要一行完成条件判断和赋值操作:

 >>> x, y = 4, 3
 >>> smaller = x if x < y else y
 >>> smaller 
3
1 b1=[1,2,3]
2 b2=[2,3,4]
3 b3 = [val for val in b1 if val in b2]
4 print b3

后面的else没有写,所以如果 val不再b2中存在就返回一个空值

python捕获异常

在Python中,异常也是对象

所有异常都是基类Exception的成员

4. 采用sys模块回溯最后的异常

import sys

try:

block

except:

info=sys.exc_info()

print info[0],":",info[1]

或者以如下的形式:

import sys

tp,val,td = sys.exc_info()

sys.exc_info()的返回值是一个tuple

(2)用raise语句手工引发一个异常:

1 raise [exception[,data]]
23     try:
4         raise MyError #自己抛出一个异常  5     except MyError:
6         print ‘a error‘78     raise ValueError,’invalid argumen

     4, 条件表达式(即"三元操作符")

三元运算符语法为:X if C else Y,只需要一行完成条件判断和赋值操作:

 >>> x, y = 4, 3
 >>> smaller = x if x < y else y
 >>> smaller 
3 

1、if语句

2、else语句

3、elif (即else-if )语句

5、while语句

6、for语句

它会自动地调用迭代器的next()方法,捕获StopIteration异常并结束循环(所有这一切都是在内部发生的)

使用项和索引迭代

 >>> nameList = [‘Donn‘, ‘Shirley‘, ‘Ben‘, ‘Janice‘,‘David‘, ‘Yen‘, ‘Wendy‘]
 >>> for i, eachLee in enumerate(nameList):
 ...  print "%d %s Lee" % (i+1, eachLee)
 ...
 1 Donn Lee
 2 Shirley Lee
 3 Ben Lee
 4 Janice Lee
 5 David Lee
 6 Yen Lee
 7 Wendy Lee

通过序列索引迭代

 >>> nameList = [‘Cathy‘, "Terry", ‘Joe‘, ‘Heather‘,‘Lucy‘]
 >>> for nameIndex in range(len(nameList)):
 ...  print "Liu,", nameList[nameIndex]
 ...
 Liu, Cathy
 Liu, Terry
 Liu, Joe
 Liu, Heather
 Liu, Lucy 

通过序列项迭代

 >>> nameList = [‘Walter‘, "Nicole", ‘Steven‘, ‘Henry‘]
 >>> for eachName in nameList:
 ...  print eachName, "Lim"
 ...
 Walter Lim
 Nicole Lim
 Steven Lim
 Henry Lim 

lambda

Python用于支持将函数赋值给变量的一个操作符 默认是返回的,所以不用再加return关键字,不然会报错

result = lambda x: x * x
result(2) # return 4
map()/filter()/reduce()

需要两个参数,第一个是一个处理函数,第二个是一个序列(list,tuple,dict)
map()

将序列中的元素通过处理函数处理后返回一个新的列表
filter()

将序列中的元素通过函数过滤后返回一个新的列表
reduce()

将序列中的元素通过一个二元函数处理返回一个结果
将上面三个函数和lambda结合使用

li = [1, 2, 3, 4, 5]
# 序列中的每个元素加1
map(lambda x: x+1, li) # [2,3,4,5,6]

# 返回序列中的偶数
filter(lambda x: x % 2 == 0, li) # [2, 4]

# 返回所有元素相乘的结果
reduce(lambda x, y: x * y, li) # 1*2*3*4*5 = 120

sorted() 结合lambda对列表进行排序

sorted 用于列表的排序,比列表自带的更加智能 有两个列表,每个列表中都有一个字典([{},{}])要求将两个这样的列表合并后按照时间排序, 两个列表中的时间为了能够通过json输出已经由时间格式转变为字符串格式.字段名为 sort_time 现在将他们按照倒序排列
sorted 的用法

sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list terable:是可迭代类型; cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项; key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项; reverse:排序规则. reverse = True 或者 reverse = False,有默认值。 * 返回值:是一个经过排序的可迭代类型,与iterable一样。
sorted()结合lambda对可迭代类型用sort_time排序

sorted(data, key=lambda d: d[‘sort_time‘], reverse=True)

赋值语句就像 A = B = 0,Python支持链式赋值。 (Python不是C)

  • lambda是一个用来构造回调的工具

1

square_root = lambda x: math.sqrt(x)

下面是lambda的其他的一些有趣的例子:

Python

1

2

3

sum = lambda x, y:   x + y   #  def sum(x,y): return x + y

out = lambda   *x:   sys.stdout.write(" ".join(map(str,x)))

lambda event, name=button8.getLabel(): self.onButton(event, name)

来源: http://python.jobbole.com/80954/

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

def __init__(self, parent):

"""Constructor"""

frame = tk.Frame(parent)

frame.pack()

btn22 = tk.Button(frame,

text="22", command=self.buttonCmd22)

btn22.pack(side=tk.LEFT)

btn44 = tk.Button(frame,

text="44", command=self.buttonCmd44)

btn44.pack(side=tk.LEFT)

def buttonCmd22(self):

self.printNum(22)

def buttonCmd44(self):

self.printNum(44)

这样写更容易(且更清楚)

Python

1

2

3

4

5

6

7

8

9

10

11

12

def __init__(self, parent):

"""Constructor"""

frame = tk.Frame(parent)

frame.pack()

btn22 = tk.Button(frame,

text="22", command=lambda: self.printNum(22))

btn22.pack(side=tk.LEFT)

btn44 = tk.Button(frame,

text="44", command=lambda: self.printNum(44))

btn44.pack(side=tk.LEFT)

1

2

lambda: a if some_condition() else b

lambda x: ‘big’ if x > 100 else ‘small’

lambda只执行一条语句

必须要有返回值

lambda 参数:执行语句(有返回值)迭代器

7、break和continue语句

8、pass语句

9、迭代器和iter()函数

迭代器是一个概念,只要python中一个对象符合迭代器类型,就可以迭代

迭代器有一个next()方法的对象,而不是通过索引来计数

 >>> myTuple = (123, ‘xyz‘, 45.67)
 >>> i = iter(myTuple)
 >>> i.next()
 123
 >>> i.next()
 ‘xyz‘
 >>> i.next()
 45.670000000000002
 >>> i.next()
 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
 StopIteration 

reversed()内建函数将返回一个反序访问的迭代器

10、列表解析

Python支持的函数式编程特性

列表解析的语法:[expr for iter_var in iterable], 它迭代iterable对象的所有条目。其中的expr应用于序列的每个成员,最后的结果值是该表达式产生的列表,迭代变量并不需要是表达式的一部分。

还提供了一个扩展版本的语法:[expr for iter_var in iterable if cond_expr],它在迭代时会过滤/捕获满足条件表达式cond_expr的序列成员。

 >>> [x ** 2 for x in range(6)]
 [0, 1, 4, 9, 16, 25] 
 >>> seq = [11, 10, 9, 9, 10, 10, 9, 8, 23, 9, 7, 18, 12, 11, 12]
 >>> filter(lambda x: x % 2, seq)
 [11, 9, 9, 9, 23, 9, 7, 11]
 >>> [x for x in seq if x % 2]
 [11, 9, 9, 9, 23, 9, 7, 11] 

矩阵样例:迭代一个有三行五列的矩阵,[(x+1,y+1) for x in range(3) for y in range(5)]。

磁盘文件样例:若有一个数据文件text.txt,需要计算出所有非空白字符的数目,可以把每行分割( split )为单词,,然后计算单词个数:>>> f = open(‘hhga.txt‘, ‘r‘);len([word for line in f for word in line.split()])。快速地计算文件大小:>>>import os;os.stat(‘text.txt‘).st_size。把每个单词的长度加起来:>>>f.seek(0);sum([len(word) for line in f for word in line.split()])。

生成器表达式  

生成器表达式是列表解析的一个扩展,只用一行代码就可以创建包含特定内容的列表

[expr for iter_var in iterable if cond_expr]

生成器表达式语法:

(expr for iter_var in iterable if cond_expr)

\  为python可以接着下一行写的符号

配置templates需要在settings.py里面的

TEMPLATES = [

‘DIRS‘:[os.path.join(BASE_DIR, ‘templates‘)],

]

and-or 技巧

bool ? a : b 表达式熟悉,这个表达式当 bool 为真时计算为 a,其它值则为 b

>>> a = "first">>> b = "second">>> 1 and a or b ‘first‘>>> 0 and a or b ‘second‘

与C表达式 bool ? a : b类似,但是bool and a or b,当 a 为假时,不会象C表达式 bool ? a : b 一样工作 
应该将 and-or 技巧封装成一个函数:

def choose(bool, a, b):return (bool and [a] or [b])[0]
>>> a = "">>> b = "second">>> (1 and [a] or [b])[0]
>>> a = "">>> b = "second">>> 1 and a or b‘second‘

因为 a 是一个空串,空串在一个布尔环境中被Python看成假值,这个表达式将“失败”,且返回 b 的值。如果你不将它想象成象 bool ? a : b 一样的语法,而把它看成纯粹的布尔逻辑,这样的话就会得到正确的理解。 1 是真,a 是假,所以 1 and a 是假。假 or b 是 b

来源: http://www.kuqin.com/diveinto_python_document/apihelper_andor.html

__getattr__为内置方法,当使用点号获取实例属性时,如果属性不存在就自动调用__getattr__方法__setattr__当设置类实例属性时自动调用,如j.name=5 就会调用__setattr__方法  self.[name]=5因为这个类是从dict继承来的,是dict的超类

来自为知笔记(Wiz)

时间: 2024-10-13 00:43:28

python基本操作的相关文章

python基本操作之列表,元组,string字符串

序列是python中最基本的数据结构,序列中的每一个元素都分配一个数字-他的位置或索引,第一个索引是0,第二个索引是1,以此类推 最常见的序列是列表和元组 列表 是python中最常用的数据类型,可以作为一个方括号内的逗号分隔值出现, list1 = ['Google', 'Runoob', 1997, 2000]; list2 = [1, 2, 3, 4, 5 ]; list3 = ["a", "b", "c", "d"];

selenium webdriver+python基本操作

导入模块: from selenium import webdriver from selenium.common.exceptions import NoSuchElementException 选择浏览器: driver = webdriver.Firefox() 打开url: driver.get("http://www.baidu.com") 等待: driver.implicitly_wait(30) driver.set_page_load_timeout(30) driv

转:selenium webdriver+python基本操作

转自: http://blog.163.com/[email protected]/blog/static/1017337222013102310617946/ 导入模块: from selenium import webdriver from selenium.common.exceptions import NoSuchElementException 选择浏览器: driver = webdriver.Firefox() 打开url: driver.get("http://www.baid

Python基本操作之文件操作

一. 1.文件操作的函数 open("文件名字(路径)",mode="模式",encoding="字符集") 2.模式:r,w,a,r+,w+,a+,rb,wb,ab,r+b,w+b,a+b 主要:r w a r+ b 3.常用的操作 1.光标(seek)* seek(0)将光条调整到开头 seek(0,2)结尾 2.tell()光标的位置 3.truncate 截断文件(单位字节(bytes)) 4.修改文件 1.引入os模块 2.打开目标文件

像计算机科学家一样思考Python (第2版)pdf

下载地址:网盘下载 内容简介  · · · · · · 本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程.贯穿全书的主体是如何思考.设计.开发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介. 全书共21章,详细介绍Python语言编程的方方面面.本书从基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰的定义,引领读者循序渐进地学习变量.表达式.语句.函数和数据结构.书中还探讨了如何处理文件和数据库,如何理解对象.方法和面向对象编程,如何使用

课程路线

---恢复内容开始--- 云计算&大数据实战课程列表 first.课程说明: 本系列课程适合有一点编程基础的人员学习(比如java,python,c/c++),最好是java编程人员,特别是从事过j2ee开发的人员.学习完本套课程,可以帮助你成为大型项目架构师,特别是数据量大,并发量高的大型项目架构师,当然也能很大程度上提高你的薪资待遇. second.课程路线 third.Linux大纲 这章是基础课程,帮大家进入大数据领域打好Linux基础,以便更好地学习Hadoop,NoSQL,Oracl

大数据课程学习流程

第一阶段 Java编程基础→oracle/mysql→sql优化→jdbc 第二阶段 JavaScript基础→JavaScript深入→jQuery→jquery easyui→bootstrap 第三阶段 Servlet/jsp→ajax→xml→svn→maven实战项目一 第四阶段 Struts2→hibernate→spring/spring mvc→项目实战二→web serviceshiro→mybatis→项目实战三 第五阶段linux+搜索+hadoop体系 Linux基础→s

大数据,云计算 核心体系

第一阶段:linux+搜索+hadoop体系 Linux大纲     这章是基础课程,帮大家进入大数据领域打好Linux基础,以便更好地学习Hadoop,hbase,NoSQL,Spark,Storm,docker,kvm,openstack等众多课程.因为企业中无一例外的是使用Linux来搭建或部署项目. 1) Linux的介绍,Linux的安装:VMware Workstation虚拟软件安装过程.CentOS虚拟机安装过程 2) 了解机架服务器,采用真实机架服务器部署linux 3) Li

大数据学习路径

大数据学习路径我vx ①⑤零零③④③⑥⑨③① 备注 A 更多大数据第一阶段linux+搜索+hadoop体系 Linux基础→shell编程→高并发架构→lucene,solr搜索→hadoop体系→HDFS→mapreduce→hbase→zookeeper→hive→flume→sqoop→项目实战一 第二阶段机器学习 R语言→mahout→项目实战二 第三阶段storm流式计算 kafka→storm→redis→项目实战三 第四阶段spark内存计算 scala编程→spark core