码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习总结

时间:2017-10-15 18:02:47      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:python程序   切片   用法   需要   知识点   运行   col   style   and   

   Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,能简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的很多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。

     首先Python 语言是一门脚本语言。Python在设计上坚持了清晰划一的风格,简洁优雅,没有了大括号,没有了分号,使得Python变得非常的整洁。而且它是一门易读、易维护,可移植性非常好,可以在linux、windows、苹果等多种操作系统上运行,并且被大量用户所欢迎的、用途广泛的语言。Python的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。这就是Python给我的有很严格的缩进规则的感觉。 

一、基本概念

  1. python中数有四种类型:整数、长整数、浮点数和复数。

  • 整数, 如 1
  • 长整数 是比较大的整数
  • 浮点数 如 1.23、3E-2
  • 复数 如 1 + 2j、 1.1 + 2.2j

  2. 字符串(字符的序列)

  • python中单引号和双引号使用完全相同。
  • 使用三引号(‘‘‘或""")可以指定一个多行字符串。
  • 转义符 ‘\‘
  • 自然字符串, 通过在字符串前加r或R。 如 r"this is a line with \n" 则\n会显示,并不是换行。
  • python允许处理unicode字符串,加前缀u或U, 如 u"this is an unicode string"。
  • 字符串是不可变的。
  • 按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
  • 去空格及特殊符号
    s.strip().lstrip().rstrip(,)
    复制字符串
    #strcpy(sStr1,sStr2)
    sStr1 = strcpy
    sStr2 = sStr1
    sStr1 = strcpy2
    print sStr2
    连接字符串
    #strcat(sStr1,sStr2)
    sStr1 = strcat
    sStr2 = append
    sStr1 += sStr2
    print sStr1
    查找字符
    #strchr(sStr1,sStr2)
    # < 0 为未找到
    sStr1 = strchr
    sStr2 = s
    nPos = sStr1.index(sStr2)
    print nPos
    比较字符串
    #strcmp(sStr1,sStr2)
    sStr1 = strchr
    sStr2 = strch
    print cmp(sStr1,sStr2)
    扫描字符串是否包含指定的字符
    #strspn(sStr1,sStr2)
    sStr1 = 12345678
    sStr2 = 456
    #sStr1 and chars both in sStr1 and sStr2
    print len(sStr1 and sStr2)
    字符串长度
    #strlen(sStr1)
    sStr1 = strlen
    print len(sStr1)
    将字符串中的大小写转换
    #strlwr(sStr1)
    sStr1 = JCstrlwr
    sStr1 = sStr1.upper()
    #sStr1 = sStr1.lower()
    print sStr1
    追加指定长度的字符串
    #strncat(sStr1,sStr2,n)
    sStr1 = 12345
    sStr2 = abcdef
    n = 3
    sStr1 += sStr2[0:n]
    print sStr1
    字符串指定长度比较
    #strncmp(sStr1,sStr2,n)
    sStr1 = 12345
    sStr2 = 123bc
    n = 3
    print cmp(sStr1[0:n],sStr2[0:n])
    复制指定长度的字符
    #strncpy(sStr1,sStr2,n)
    sStr1 = ‘‘
    sStr2 = 12345
    n = 3
    sStr1 = sStr2[0:n]
    print sStr1
    将字符串前n个字符替换为指定的字符
    #strnset(sStr1,ch,n)
    sStr1 = 12345
    ch = r
    n = 3
    sStr1 = n * ch + sStr1[3:]
    print sStr1
    扫描字符串
     
    #strpbrk(sStr1,sStr2)
    sStr1 = cekjgdklab
    sStr2 = gka
    nPos = -1
    for c in sStr1:
        if c in sStr2:
            nPos = sStr1.index(c)
            break
    print nPos
     
    翻转字符串
    #strrev(sStr1)
    sStr1 = abcdefg
    sStr1 = sStr1[::-1]
    print sStr1
    查找字符串
    #strstr(sStr1,sStr2)
    sStr1 = abcdefg
    sStr2 = cde
    print sStr1.find(sStr2)
    分割字符串
     
    #strtok(sStr1,sStr2)
    sStr1 = ab,cde,fgh,ijk
    sStr2 = ,
    sStr1 = sStr1[sStr1.find(sStr2) + 1:]
    print sStr1
    #或者
    s = ab,cde,fgh,ijk
    print(s.split(,))
     
    连接字符串
    delimiter = ,
    mylist = [Brazil, Russia, India, China]
    print delimiter.join(mylist)
    PHP 中 addslashes 的实现
     
    def addslashes(s):
        d = {":\\", "":"\\‘", "\0":"\\\0", "\\":"\\\\"}
        return ‘‘.join(d.get(c, c) for c in s)
     
    s = "John ‘Johny‘ Doe (a.k.a. \"Super Joe\")\\\0"
    print s
    print addslashes(s)
     
    只显示字母与数字
     
    def OnlyCharNum(s,oth=‘‘):
        s2 = s.lower();
        fomart = abcdefghijklmnopqrstuvwxyz0123456789
        for c in s2:
            if not c in fomart:
                s = s.replace(c,‘‘);
        return s;
     
    print(OnlyStr("a000 aa-b"))
     
     
    
    截取字符串
     
    str = ’0123456789′
    print str[0:3] #截取第一位到第三位的字符
    print str[:] #截取字符串的全部字符
    print str[6:] #截取第七个字符到结尾
    print str[:-3] #截取从头开始到倒数第三个字符之前
    print str[2] #截取第三个字符
    print str[-1] #截取倒数第一个字符
    print str[::-1] #创造一个与原字符串顺序相反的字符串
    print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
    print str[-3:] #截取倒数第三位到结尾

     

  3. 标识符的命名

  • 第一个字符必须是字母表中字母或下划线‘_‘。
  • 标识符的其他的部分有字母、数字和下划线组成。
  • 标识符对大小写敏感。

  4. 对象

    python程序中用到的任何“东西”都成为“对象”。

  5. 逻辑行和物理行

    物理行是我们在编写程序时看到的,逻辑行则是python看到的。

    python中分号;标识一个逻辑行的结束,但是实际中一般每个物理行只写一个逻辑行,可以避免使用分号。

    多个物理行中可以写一个逻辑行,如下:

1 s = "peter is \
2 writing this article"
3     上面\的使用被称为‘明确的行连接’, 又如:
4 
5 print 6 (peter)

6. 缩进

    空白在python是非常重要的,行首的空白是最重要的,又称为缩进。行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而决定语句

  分组。这意味着同一层次的语句必须有相同的缩进,每一组这样的语句称为一个块。

  注意:不要混合使用空格和制表符来缩进,因为在跨越不同的平台时无法正常工作。

二、运算符与表达式

  Python 许多运算符,表达式和java 编程语言的运算符和表达式使用方法相同,所以下面就简单的介绍几个常用的运算符和表达式的使用方法:

 

x = 5
y = 3
a = 4
b = 2
print(x + y) #结果为 7
print(x - y)  #结果为2
print(x * y) #结果为15
print(x / y)  #结果为1.6666666666666667 不同的机器浮点数的结果可能不同
print(x // y) #向下去整结果为1
print(x % y) #两数相除取余结果为2
print(x**y) #5的3次幂结果为125

print(a / b) #结果为浮点数2.0
print(a % b)#取余结果为0
print(a // b)#取整结果为2

 

 

a = 4
b = 2
c = 2
print(a == b) #False
print(a != b)  #True
print(a <> b)  #True
print(a > b)   #True
print(a < b)   #False
print(a >= b) #True
print(c <= b) #True
a = 4
b = 2
c = 0
print(a>b and b>c) #a>b为True继续计算b>c,b>c也为True则结果为True
print(a>b and b<c)#a>b为True继续计算c<b,b>c结果为False则结果为False
print(a>b or c<b) #a>b为True则不继续计算c<b,结果为True
print(not c<b) #c<b为True not True结果为False
print(not a<b) #a<b为False not Flase结果为True

 

3. python 控制台输出 使用print

print (abc)    #打印abc并换行
print (“abc%s”%“d”)   #打印abcd
print(“abc%sef%s”%“d”,“g”) "abc%sef%s" % ("d", "g")    #打印abcdefg

三、控制流

  1. if 语句

 i = 10
n = int(raw_input("enter a number:"))

if n == i:
    print (equal)
elif n < i:
    print (lower)
else:
    print (height)

2. while语句

while True:
    pass
else:
    pass
#else语句可选,当while为False时,else语句被执行。 pass是空语句。

3. for 循环 for..in

for i in range(0, 5):
    print i
else:
    pass
# 打印0到4

注:当for循环结束后执行else语句;

    range(a, b)返回一个序列,从a开始到b为止,但不包括b,range默认步长为1,可以指定步长,range(0,10,2);

4. break语句

    终止循环语句,如果从for或while中终止,任何对应循环的else将执行。

  5. continue语句

    continue语句用来调过当前循环的剩余语句,然后继续下一轮循环。

四、函数

  函数通过def定义。def关键字后跟函数的标识符名称,然后跟一对圆括号,括号之内可以包含一些变量名,该行以冒号结尾;接下来是一块语句,即函数体。

def sumOf(a, b):
    return a + b

 1. 函数形参

    函数中的参数名称为‘形参’,调用函数时传递的值为‘实参’

  2. 局部变量

    在函数内定义的变量与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。这称为变量的作用域。

    global语句, 为定义在函数外的变量赋值时使用global语句。

def func():
    global x
def func(a, b=2, c=3):
    print "a is %s, b is %s, c is %s" % (a, b, c)

func(1) #a is 1, b is 2, c is 3
func(1, 5) #a is 1, b is 5, c is 3
func(1, c = 10) #a is 1, b is 2, c is 10
func(c = 20, a = 30) #a is 30, b is 2, c is 20

 


    print "x is ", x
    x = 1

x = 3
func()
print x

#3
#1

3. 默认参数

    通过使用默认参数可以使函数的一些参数是‘可选的’。

def say(msg, times =  1):
    print msg * times

say("peter")
say("peter", 3)

4. 关键参数

    如果某个函数有很多参数,而现在只想指定其中的部分,那么可以通过命名为这些参数赋值(称为‘关键参数’)。

    优点:不必担心参数的顺序,使函数变的更加简单;假设其他参数都有默认值,可以只给我们想要的那些参数赋值。

六、数据结构

  python有三种内建的数据结构:列表、元组和字典。

  1. 列表

    list是处理一组有序项目的数据结构,列表是可变的数据结构。列表的项目包含在方括号[]中,eg: [1, 2, 3], 空列表[]。判断列表中是否包含某项可以使用in, 比如 l = [1, 2, 3]; print 1 in l; #True;支持索引和切片操作;索引时若超出范围,则IndexError;使用函数len()查看长度;使用del可以删除列表中的项,eg: del l[0] # 如果超出范围,则IndexError

list函数如下:

l = [1, 2, 2]
l.append(3) #[1, 2, 2, 3]

 

l = [1, 2, 2]
print l.count(2) # 2
l = [1, 2, 2]

l.insert(1, 100)
print l #[1, 100, 2, 2]

l.insert(100, 1000)
print l #[1, 100, 2, 2, 1000]

2. 元组

    tuple和list十分相似,但是tuple是不可变的,即不能修改tuple,元组通过圆括号中用逗号分割的项定义;支持索引和切片操作;可以使用 in

  查看一个元素是否在tuple中。空元组();只含有一个元素的元组("a",) #需要加个逗号

    优点:tuple比list速度快;对不需要修改的数据进行‘写保护’,可以是代码更安全

    tuple与list可以相互转换,使用内置的函数list()和tuple()。

l = [1, 2, 3]
print l # [1, 2, 3]

t = tuple(l)
print t # (1, 2, 3)

l1 = list(t)
print l1 #[1, 2, 3]

元组最通常的用法是用在打印语句,如下例:

name = "Peter Zhang"
age = 25
print Name: %s; Age: %d"% (name, age) # Name: Peter Zhang; Age: 25
t = (1, 2, 3, 1, 2, 3)

print t.count(2) # 2

index(value, [start, [stop]])  ---返回列表中第一个出现的值为value的索引,如果没有,则异常 ValueError

t = (1, 2, 3, 1, 2, 3)

print t.index(3) # 2
try:
    print t.index(4)
except ValueError, ve:
    print (there is no 4 in tuple  # there is no 4 in tuple

 3. 字典

    字典由键值对组成,键必须是唯一的;eg: d = {key1:value1, key2:value2};空字典用{}表示;字典中的键值对是没有顺序的,如果想要

  一个特定的顺序,那么使用前需要对它们排序;d[key] = value,如果字典中已有key,则为其赋值为value,否则添加新的键值对key/value;使

  用del d[key] 可以删除键值对;判断字典中是否有某键,可以使用in 或 not in;

d = {}
d["1"] = "one"
d["2"] = "two"
d["3"] = "three"

del d["3"]

for key, value in d.items():
    print "%s --> %s" % (key, value)
#1 --> one
#2 --> two
 dict函数如下:

    clear()  ---删除字典中所有元素

d1 = {"1":"one", "2":"two"}
d1.clear()

print d1 # {}
d1 = {"1":"one", "2":"two"}
d2 = d1.copy()

print d2 #{1: one, 2: two}

copy()  ---返回字典的一个副本(浅复制)

dict.fromkeys(seq,val=None) ---创建并返回一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值(默认为None)

l = [1, 2, 3]
t = (1, 2, 3)

d3 = {}.fromkeys(l)
print d3 #{1: None, 2: None, 3: None}

d4 = {}.fromkeys(t, "default")
print d4 #{1: default, 2: default, 3: default}

get(key,[default])  ---返回字典dict中键key对应值,如果字典中不存在此键,则返回default 的值(default默认值为None)

d5 = {1:"one", 2:"two", 3:"three"}

print d5.get(1) #one
print d5.get(5) #None
print d5.get(5, "test") #test

has_key(key)  ---判断字典中是否有键key

d6 = {1:"one", 2:"two", 3:"three"}

print d6.has_key(1)  #True
print d6.has_key(5)  #False

 4. 序列

    序列类型是指容器内的元素从0开始的索引顺序访问,一次可以访问一个或者多个元素;列表、元组和字符串都是序列;序列的两个主要特点是

  索引操作符和切片操作符;索引可以得到特定元素;切片可以得到部分序列;

numbers = ["zero", "one", "two", "three", "four"]

print numbers[1] # one
print numbers[-1] # four
#print numbers[5] # raise IndexError

print numbers[:] # [zero, one, two, three, four]
print numbers[3:] # [three, four]
print numbers[:2] # [zero, one]
print numbers[2:4] # [two, three]
print numbers[1:-1] # [one, two, three]

 切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束。 如果不指定第一个数,Python就从

  序列首开始。如果没有指定第二个数,则Python会停止在序列尾。 注意,返回的序列从开始位置 开始 ,刚好在结束位置之前 结束。即开始位置是

  包含在序列切片中的,而结束位置被排斥在切片外。 可以用负数做切片。负数用在从序列尾开始计算的位置。

       由于学习Python的时间很短,对于Python的一些语法和使用方法还不是很熟练,对于Python的基础知识点的理解还不是很好,希望可以在以后的日子再 好好学习Python!

 

Python学习总结

标签:python程序   切片   用法   需要   知识点   运行   col   style   and   

原文地址:http://www.cnblogs.com/zhoushasha/p/7670429.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!