【python学习笔记】

如何查看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:

  1. n.pop(index) will remove the item atindex from the list and return it to you:
n = [1, 3, 5]
n.pop(1)
# Returns 3 (the item at index 1)
print n
# prints [1, 5]
  1. n.remove(item) will remove the actual item if it finds it:
n.remove(1)
# Removes 1 from the list,
# NOT the item at index 1
print n
# prints [3, 5]
  1. 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])
# Doesn't return anything
print n
# prints [1, 5]


初始化矩阵并赋初值

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!")


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值