如何查看math下的所有方法
import math # Imports the math module
everything = dir(math) # Sets everything to a list of things from math
print everything # Prints 'em all!
数组中的最大最小值
def biggest_number(*args):
print max(args)
return max(args)
def smallest_number(*args):
print min(args)
return min(args)
biggest_number(-10, -5, 5, 10)
smallest_number(-10, -5, 5, 10)
输出字符串数组从第n个到第m个
suitcase = ["sunglasses", "hat", "passport", "laptop", "suit", "shoes"]
first = suitcase[0:<span style="color:#ff0000;">2</span>] # The first and second items (index zero and one)<span style="white-space:pre"> </span>0~1
middle = suitcase[2:<span style="color:#ff0000;">4</span>] # Third and fourth items (index two and three)<span style="white-space:pre"> </span>2~3
last = suitcase[4:<span style="color:#ff0000;">6</span>] # The last two items (index four and five)<span style="white-space:pre"> </span>4~5
字符串数组的插入insert
animals = ["aardvark", "badger", "duck", "emu", "fennec fox"]
duck_index =animals.index("duck") # Use index() to find "duck"
# Your code here!
animals.insert(duck_index, "cobra")
print animals # Observe what prints after the insert operation
删除字典中的某一项del
# key - animal_name : value - location
zoo_animals = { 'Unicorn' : 'Cotton Candy House',
'Sloth' : 'Rainforest Exhibit',
'Bengal Tiger' : 'Jungle House',
'Atlantic Puffin' : 'Arctic Exhibit',
'Rockhopper Penguin' : 'Arctic Exhibit'}
# A dictionary (or list) declaration may break across multiple lines
# Removing the 'Unicorn' entry. (Unicorns are incredibly expensive.)
del zoo_animals['Unicorn']
del zoo_animals['Sloth']
del zoo_animals['Bengal Tiger']
# Your code here!
zoo_animals['Rockhopper Penguin']="asdasdf"
print zoo_animals
删除字符串数组中的某一项remove
beatles = ["john","paul","george","ringo","stuart"]
beatles.remove("stuart")
print beatles
>> ["john","paul","george","ringo"]
输出字典元素
webster = {
"Aardvark" : "A star of a popular children's cartoon show.",
"Baa" : "The sound a goat makes.",
"Carpet": "Goes on the floor.",
"Dab": "A small amount."
}
# Add your code below!
for x in webster:
print webster[x]
Removing elements from lists
This exercise will expand on ways to remove items from a list. You actually have a few options. For a list called n
:
-
n.pop(index)
will
remove the item atindex
from the list and return
it to you:
n = [1, 3, 5]
n.pop(1)
print n
-
n.remove(item)
will remove the actual item
if
it finds it:
n.remove(1)
print n
-
del(n[1])
is
like .pop
in that it will remove the item at the
given index, but it won't return it:
del(n[1])
print n
初始化矩阵并赋初值
multilist = [['O' for col in range(5)] for row in range(5)]
比较两个或多个list中相同位置的元素的最大值 ZIP
list_a = [3, 9, 17, 15, 19]
list_b = [2, 4, 8, 10, 30, 40, 50, 60, 70, 80, 90]
for a, b in <span style="color:#ff0000;"><strong>zip</strong></span>(list_a, list_b):
# Add your code here!
print max(a,b)
字符串反转
#字符串的反转
def reverse (s):
rt = ''
for i in range(len(s)-1, -1, -1):
rt += s[i]
return rt
def reverse2 (s):
li = list(s)
li.reverse()
rt = "".join(li)
return rt
def reverse3 (s):
return s[::-1]
def reverse4 (s):
return "".join(reversed(s))
from functools import reduce
def reverse5 (s):
return reduce(lambda x,y:y+x,s)
字符串大小写
转换大小写
和其他语言一样,Python为string对象提供了转换大小写的方法:upper() 和 lower()。还不止这些,Python还为我们提供了首字母大写,其余小写的capitalize()方法,以及所有单词首字母大写,其余小写的title()方法。函数较简单,看下面的例子:
s = 'hEllo pYthon'
print s.upper()
print s.lower()
print s.capitalize()
print s.title()
输出结果:
HELLO PYTHON
hello python
Hello python
Hello Python
判断大小写
Python提供了isupper(),islower(),istitle()方法用来判断字符串的大小写。注意的是:
1. 没有提供 iscapitalize()方法,下面我们会自己实现,至于为什么Python没有为我们实现,就不得而知了。
2. 如果对空字符串使用isupper(),islower(),istitle(),返回的结果都为False。
print 'A'.isupper() #True
print 'A'.islower() #False
print 'Python Is So Good'.istitle() #True
#print 'Dont do that!'.iscapitalize() #错误,不存在iscapitalize()方法
实现iscapitalize
1. 如果我们只是简单比较原字符串与进行了capitallize()转换的字符串的话,如果我们传入的原字符串为空字符串的话,返回结果会为True,这不符合我们上面提到的第2点。
def iscapitalized(s):
return s == s.capitalize( )
有人想到返回时加入条件,判断len(s)>0,其实这样是有问题的,因为当我们调用iscapitalize('123')时,返回的是True,不是我们预期的结果。
2. 因此,我们回忆起了之前的translate方法,去判断字符串是否包含任何英文字母。实现如下:
import string
notrans = string.maketrans('', '')
def containsAny(str, strset):
return len(strset) != len(strset.translate(notrans, str))
def iscapitalized(s):
return s == s.capitalize( ) and containsAny(s, string.letters)
#return s == s.capitalize( ) and len(s) > 0 #如果s为数字组成的字符串,这个方法将行不通
调用一下试试:
print iscapitalized('123')
print iscapitalized('')
print iscapitalized('Evergreen is zcr1985')
输出结果:
False
False
True
作者:CoderZh(CoderZh的技术博客 - 博客园)
出处:http://coderzh.cnblogs.com/
字符串操作
Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
# 例1:字符串截取str = '12345678'print str[0:1]>> 1 # 输出str位置0开始到位置1以前的字符print str[1:6] >> 23456 # 输出str位置1开始到位置6以前的字符num = 18str = '0000' + str(num) # 合并字符串print str[-5:] # 输出字符串右5位>> 00018
Python 替换字符串使用 变量.replace("被替换的内容","替换后的内容"[,次数]),替换次数可以为空,即表示替换所有。要注意的是使用replace替换字符串后仅为临时变量,需重新赋值才能保存。
# 例2:字符串替换str = 'akakak'str = str.replace('k',' 8') # 将字符串里的k全部替换为8print str>> 'a8a8a8' # 输出结果
Python 查找字符串使用 变量.find("要查找的内容"[,开始位置,结束位置]),开始位置和结束位置,表示要查找的范围,为空则表示查找所有。查找到后会返回位置,位置从0开始算,如果每找到则返回-1。
# 例3:字符串查找str = 'a,hello'print str.find('hello') # 在字符串str里查找字符串hello>> 2 # 输出结果
Python 分割字符串使用 变量.split("分割标示符号"[分割次数]),分割次数表示分割最大次数,为空则分割所有。
例4:字符分割str = 'a,b,c,d'strlist = str.split(',') # 用逗号分割str字符串,并保存到列表for value in strlist: # 循环输出列表值 print value>> a # 输出结果>> b>> c>> d
s.strip() .lstrip() .rstrip(',') 去空格及特殊符号
复制字符串
Python
1 #strcpy(sStr1,sStr2)
2 sStr1 ='strcpy'
3 sStr2 =sStr1
4 sStr1 ='strcpy2'
5 print sStr2
连接字符串
Python
1 #strcat(sStr1,sStr2)
2 sStr1 ='strcat'
3 sStr2 ='append'
4 sStr1 +=sStr2
5 print sStr1
查找字符
< 0 未找到
Python
1 #strchr(sStr1,sStr2)
2 sStr1 ='strchr'
3 sStr2 ='s'
4 nPos =sStr1.index(sStr2)
5 print nPos
比较字符串
Python
1 #strcmp(sStr1,sStr2)
2 sStr1 ='strchr'
3 sStr2 ='strch'
4 print cmp(sStr1,sStr2)
扫描字符串是否包含指定的字符
Python
1 #strspn(sStr1,sStr2)
2 sStr1 ='12345678'
3 sStr2 ='456'
4 #sStr1 and chars both in sStr1 and sStr2
5 print len(sStr1 and sStr2)
字符串长度
Python
1 #strlen(sStr1)
2 sStr1 ='strlen'
3 print len(sStr1)
将字符串中的大小写转换
Python
1 #strlwr(sStr1)
2 sStr1 ='JCstrlwr'
3 sStr1 =sStr1.upper()
4 #sStr1 = sStr1.lower()
5 print sStr1
追加指定长度的字符串
Python
1 #strncat(sStr1,sStr2,n)
2 sStr1 ='12345'
3 sStr2 ='abcdef'
4 n = 3
5 sStr1 +=sStr2[0:n]
6 print sStr1
字符串指定长度比较
Python
1 #strncmp(sStr1,sStr2,n)
2 sStr1 ='12345'
3 sStr2 ='123bc'
4 n = 3
5 print cmp(sStr1[0:n],sStr2[0:n])
复制指定长度的字符
Python
1 #strncpy(sStr1,sStr2,n)
2 sStr1 =''
3 sStr2 ='12345'
4 n = 3
5 sStr1 =sStr2[0:n]
6 print sStr1
将字符串前n个字符替换为指定的字符
Python
1 #strnset(sStr1,ch,n)
2 sStr1 ='12345'
3 ch = 'r'
4 n = 3
5 sStr1 =n* ch+sStr1[3:]
6 print sStr1
扫描字符串
Python
1 #strpbrk(sStr1,sStr2)
2 sStr1 ='cekjgdklab'
3 sStr2 ='gka'
4 nPos =-1
5 for c in sStr1:
6 ifcin sStr2:
7 nPos = sStr1.index(c)
8 break
9 print nPos
翻转字符串
Python
1 #strrev(sStr1)
2 sStr1 ='abcdefg'
3 sStr1 =sStr1[::-1]
4 print sStr1
查找字符串
Python
1 #strstr(sStr1,sStr2)
2 sStr1 ='abcdefg'
3 sStr2 ='cde'
4 print sStr1.find(sStr2)
分割字符串
Python
1 #strtok(sStr1,sStr2)
2 sStr1 ='ab,cde,fgh,ijk'
3 sStr2 =','
4 sStr1 =sStr1[sStr1.find(sStr2)+1:]
5 print sStr1
6 或者
7 s = 'ab,cde,fgh,ijk'
8 print(s.split(','))
连接字符串
Python
1 delimiter =','
2 mylist =['Brazil','Russia','India','China']
3 print delimiter.join(mylist)
PHP 中 addslashes 的实现
Python
1 def addslashes(s):
2 d = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}
3 return''.join(d.get(c, c)for c ins)
4
5 s = "John 'Johny' Doe (a.k.a. \"Super Joe\")\\\0"
6 print s
7 print addslashes(s)
只显示字母与数字
Python
1 def OnlyCharNum(s,oth=''):
2 s2 = s.lower();
3 fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'
4 forcin s2:
5 ifnotc infomart:
6 s=s.replace(c,'');
7 returns;
8
9 print(OnlyStr("a000 aa-b"))
Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
# 例1:字符串截取
str = '12345678'
print str[0:1]
>> 1 # 输出str位置0开始到位置1以前的字符
print str[1:6]
>> 23456 # 输出str位置1开始到位置6以前的字符
num = 18
str = '0000' + str(num) # 合并字符串
print str[-5:] # 输出字符串右5位
>> 00018
Python 替换字符串使用 变量.replace("被替换的内容","替换后的内容"[,次数]),替换次数可以为空,即表示替换所有。要注意的是使用replace替换字符串后仅为临时变量,需重新赋值才能保存。
# 例2:字符串替换
str = 'akakak'
str = str.replace('k',' 8') # 将字符串里的k全部替换为8
print str
>> 'a8a8a8' # 输出结果
Python 查找字符串使用 变量.find("要查找的内容"[,开始位置,结束位置]),开始位置和结束位置,表示要查找的范围,为空则表示查找所有。查找到后会返回位置,位置从0开始算,如果每找到则返回-1。
# 例3:字符串查找
str = 'a,hello'
print str.find('hello') # 在字符串str里查找字符串hello
>> 2 # 输出结果
Python 分割字符串使用 变量.split("分割标示符号"[分割次数]),分割次数表示分割最大次数,为空则分割所有。
例4:字符分割
str = 'a,b,c,d'
strlist = str.split(',') # 用逗号分割str字符串,并保存到列表
for value in strlist: # 循环输出列表值
print value
>> a # 输出结果
>> b
>> c
>> d
字符串里有三个去空格的函数
strip 同时去掉左右两边的空格
lstrip 去掉左边的空格
rstrip 去掉右边的空格
输出字典中的元素和值
my_dict = {
"Name": "Guido",
"Age": 56,
"BDFL": True,
"address": "ZJU"
}
print my_dict.items()
print my_dict.keys()
print my_dict.values()
字符串计数 count
def count(sequence,item):
return sequence.count(item)
sort方法
Python语言内置了sort方法,可以很方便地对某个List进行排序:
L = [6, 5, 1, 3, 4, 2]
L.sort()
print L
---------- Run Python Program ----------
[1, 2, 3, 4, 5, 6]
数组的快速输出
to_five = ['A', 'B', 'C', 'D', 'E']
print to_five[3:]
# prints ['D', 'E']
print to_five[:2]
# prints ['A', 'B']
print to_five[::2]
# print ['A', 'C', 'E']
元组元素的逆向输出
letters = ['A', 'B', 'C', 'D', 'E']
print letters[::-1]
输出:<code class="cpp" style="box-sizing: border-box; padding: 0.15em 0.25em; font-size: 0.85em; line-height: 22px; border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; background-color: rgba(0, 0, 0, 0.0429688); border: 1px solid rgba(0, 0, 0, 0.0664063); font-family: Monaco, Menlo, 'Ubuntu Mono', Consolas, source-code-pro, monospace; color: rgb(51, 51, 51); ">[<span class="string" style="box-sizing: border-box; ">'E'</span>,<span class="string" style="box-sizing: border-box; ">'D'</span>, <span class="string" style="box-sizing: border-box; ">'C'</span>, <span class="string" style="box-sizing: border-box; ">'B'</span>, <span class="string" style="box-sizing: border-box; ">'A'</span>]</code><span style="color: rgb(51, 51, 51); font-family: 'Open Sans', 'Hevetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: 22px; ">.</span>
lambda
Check out the code at the right. See the lambda bit? Typing
lambda x: x % 3 == 0
Is the same as
def by_three(x):
return x % 3 == 0
lambda过滤
my_list = range(16)
filter(lambda x: x % 3 == 0, my_list)
位运算
print 5 >> 3 # Right Shift # 5/(2^3)=0
print 5 << 1 # Left Shift<span style="white-space:pre"> </span> # 5*(2^1)=10
print 8 & 5 # Bitwise AND<span style="white-space:pre"> </span> # 8:1000 5:101 相与为0
print 9 | 4 # Bitwise OR<span style="white-space:pre"> </span> # 9:1001 4:100 相或为13x的按位翻转是-(x+1)
print 12 ^ 42 # Bitwise XOR # 12:1100 42:100110 异或为
print ~88 # Bitwise NOT
移位后还是输出二进制
shift_right = 0b1100
shift_left = 0b1
# Your code here!
shift_right = shift_right >> 2
shift_left = shift_left << 2
print bin(shift_right)
print bin(shift_left)
输出
0b11
0b100
进制转换
在python2.6以上的版本中自带了将十进制转化为二进制的函数bin()。
看一下bin.__doc__怎么说的。
>>>print bin.__doc__
bin(number) -> string
return the binary represiontation of an integer or long integer
这就是一个将十进制转换为二进制的函数,输出是一个字符串。那么输出看看。
>>>a = 50
>>>bin(a)
'0b110010'
的确输出了,但是多了前面两位'0b'。那么在输出的时候用bin(a)[2:]就可以避免了。
再来说说怎么将二进制转换为十进制。
先看看这个函数int(),使用方法是int(x, base)其中base是可选项。这个函数的__doc__大概讲的是在可以的情况下,将一个字符串或者数字转化为一个整型数字。浮点数将去掉小数位;对于字符串,需要用到base参数。
对于浮点数的这个用法一般人都会比较清楚。对于字符串的这个,初步了解到了可以这么用。
>>>a='1010'
>>>int(a,2)
10
可以看出把二进制表示的一个字符串变成了十进制。同理,对于十六进制也可以这么干。
>>>a='1a'
>>>int(a,16)
26
这个就是进制间的转换问题。怎么把十进制转换成十六进制,在不用自己编函数的情况下我还不知道有什么方法。有朋友知道可以分享下。
关于位运算,python提供了以下方法,:&(按位与),|(按位或),^(按位异或),~(按位取反),>>(右移运算),<<(左移运算)。优先级从高到低依次为:~, & , ^, |。
二进制前面加“0b“
one = 0b1
two = 0b10
three = 0b11
four = 0b100
five = 0b101
six = 0b110
seven = 0b111
eight = 0b1000
nine = 0b1001
ten = 0b1010
eleven =0b1011
twelve =0b1100
输出二进制 bin方法
print bin(2)<span style="white-space:pre"> </span><pre class="jqconsole jqconsole-blurred" style="box-sizing: border-box; background-color: rgb(23, 23, 26); color: rgb(197, 200, 198); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; overflow: auto; padding: 15px; white-space: pre-wrap; border: 0px; font-size: 15px; line-height: 22px; position: absolute; top: 0px; bottom: 0px; right: 0px; left: 0px; margin-top: 0px; margin-bottom: 0px; "><span class="print" style="box-sizing: border-box; color: rgb(245, 245, 245); line-height: 19px; font-size: 14px; ">0b10</span>
0b10
#0b10print bin(3) #0b11print bin(4) #0b100print bin(5) #0b101
pass语句在Python中表示一个空的语句块
类
self的介绍类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。虽然你可以给这个参数任何名称,但是 强烈建议 你使用self这个名称——其他名称都是不赞成你使用的。使用一个标准的名称有很多优点——你的程序读者可以迅速识别它,如果使用self的话,还有些IDE(集成开发环境)也可以帮助你。给C++/Java/C#程序员的注释Python中的self等价于C++中的self指针和Java、C#中的this参考。 你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1,
arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)——这就是self的原理了。这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。
继承
class SchoolMember:
'''Represents any school member.'''
def __init__(self, name, age):
self.name = name
self.age = age
print '(Initialized SchoolMember: %s)' % self.name
def tell(self):
'''Tell my details.'''
print 'Name:"%s" Age:"%s"' % (self.name, self.age),
class Teacher(SchoolMember):
'''Represents a teacher.'''
def __init__(self, name, age, salary):
<span style="color:#ff0000;"><strong>SchoolMember.__init__(self, name, age)</strong></span>
self.salary = salary
print '(Initialized Teacher: %s)' % self.name
def tell(self):
SchoolMember.tell(self)
print 'Salary: "%d"' % self.salary
class Student(SchoolMember):
'''Represents a student.'''
def __init__(self, name, age, marks):
SchoolMember.__init__(self, name, age)
self.marks = marks
print '(Initialized Student: %s)' % self.name
def tell(self):
SchoolMember.tell(self)
print 'Marks: "%d"' % self.marks
t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 75)
print # prints a blank line
members = [t, s]
for member in members:
member.tell() # works for both Teachers and Students
(源文件:code/inherit.py)
输出
$ python inherit.py
(Initialized SchoolMember: Mrs. Shrividya)
(Initialized Teacher: Mrs. Shrividya)
(Initialized SchoolMember: Swaroop)
(Initialized Student: Swaroop)
Name:"Mrs. Shrividya" Age:"40" Salary: "30000"
Name:"Swaroop" Age:"22" Marks: "75"
python中的super,参考:http://www.cnblogs.com/lovemo1314/archive/2011/05/03/2035005.html
super调用父类方法
class Employee(object):
"""Models real-life employees!"""
def __init__(self, employee_name):
self.employee_name = employee_name
def calculate_wage(self, hours):
self.hours = hours
return hours * 20.00
# Add your code below!
class PartTimeEmployee(Employee):
def calculate_wage(self,hours):
self.hours = hours
return hours * 12.00
def full_time_wage(self,hours):
return super(PartTimeEmployee,self).calculate_wage(hours)
milton = PartTimeEmployee("Tom")
print milton.full_time_wage(10)
输出
200
print
支持参数格式化,与C语言的printf类似
>>> strHello = "the length of (%s) is %d" %('Hello World',len('Hello World'))
>>> print (strHello)
__repr__告诉系统输出类的格式
class Point3D(object):
def __init__(self,x,y,z):
self.x = x
self.y = y
self.z = z
def __repr__(self):
return "(%d, %d, %d)" % (self.x, self.y, self.z)
my_point=Point3D(1,2,3)
print my_point
写文件:
my_list = [i**2 for i in range(1,11)]
# Generates a list of squares of the numbers 1 - 10
f = open("output.txt", "w")
for item in my_list:
f.write(str(item) + "\n")
f.close()
with ... as ...
with open("file", "mode") as variable:
# Read or write to the file
with open("text.txt", "w") as textfile:
<span style="white-space:pre"> </span>textfile.write("Success!")