遍历python语法

 

 

2.基本元素:数字、字符串和变量

2.1 python有哪些基本类型?
布尔型(True, False),整型(42,100000),浮点型(3.14159,1.0e8),字符串型("string")

2.2 python中所有的数据都是以对象的形式存在。
对象就是数据实体,变量就是名字。对象有类型之分,基本的就以上几种,对象还分常量和变量。

2.3 变量赋值(=)?
赋值不等于复制,变量赋值只是为数据对象取了一个名字,名字是对对象的引用而不是对象本身。
变量名是与实际数据相关联的名字,变量存在的意义就是为了让人方便引用内存中的值,在编译时变量名会被替换为地址。

2.4 如何查看对象的类型?type()语句

2.5 python数字(整数和浮点数)运算?
+、-、*、/(浮点除)、//(整数除)、%(求余)、**(幂)、divmod()

2.6 python中的基数
0b/0B二进制、0o/0O八进制、0x/0X十六进制

2.7 类型转换、长度查看(均为内置函数,不依附于对象,可以直接使用)
int(), float(), str(), bool();len()

2.8 python3从python2中分离出来的原因?
Unicode

2.9 字符串型?
第一个序列类型,本质是字符序列,不可变(同元组,不能直接插入、删除和更改元素)。

2.10 创建字符串?
单引号或双引号创建(交互式解释器输出的字符串永远是单引号包裹的),三连(单双)引号创建多行字符串。

2.11 print函数的输出格式
print会截取最外层的引号,直接输出实际内容;自动在各输出部分之间添加空格;所有输出最后添加换行符。(print输出格式可以设置)

2.12 字符串操作:拼接、复制、提取、单个字符替换
“+”拼接字符串常量和变量;直接先后放置可以拼接字符串常量;“*”可以做字符串乘法,做复制;“[]”可以通过偏移量提取字符,可以从头[0][1][2]提取,也可以从尾部[-1][-2]提取(不能超过最大限制)。“obj.replace('obj', 'c')”可用于替换字符串的单个字符。

2.13 分片操作[start:end:step]
[:]提取整个字符串;[start:]从start到结尾;[:end]从开头到end-1(特别注意);[start:end]从start到end-1;[start:end:step]从start到end-1,每step个字符提取一个。
偏移量0是开头;-1是结尾;step为负就是逆序。

2.14 字符串对象的成员函数:split(),join(),
string.split("string" or 'c')将字符串按分隔符分割为子串的列表[]。
("string" or 'c').join(list)反向操作
string.startwith("string"); string.endwith("string"); string.find("string"); string.rfind("string"); string.count("string"); string.isalnum().
string.strip("."); string.capitalize(); string.title(); string.upper(); string.lower(); string.swapcase(); string.center(30); string.ljust(30); string.rjust(30).

2.15 字符串子串替换:replace()
string.replace("obj", "c", num)函数有三个参数,第三个为最多替换多少处。功能不如正则表达式强大。

 

3.容器:列表、元组、字典与集合

将数据进行拆分和合并,加工为特定形式。
3.1 序列结构 字符串、元组、列表(前两者不可变)(后两者不要求所含元素种类相同)

3.2 创建列表 [] list[] 列表推导式 (列表有序,元素可重复)

3.3 数据结构之间的转换 list(), tuple(), dict(), set()
list()可以将字符串、元组转化为列表,split()可以将字符串分割为列表,join可以将列表形成字符串

3.4 使用[下标]获取列表元素,[0][1][2], [-1][-2][-3];

3.5 列表里面可以包含任意元素,所以列表可以嵌套列表,[[],[],[]],一般嵌套两层就足够了,类似二维数组。

3.6 切片提取元素:[start, end, step]

3.7 列表对象的成员函数:list.append(var)(在末尾添加元素), list.extend(var)(+=)(合并列表), list.insert(num, var)(在指定位置插入元素), list.remove(value)(删除指定值元素), list.pop(1)(获取并删除指定位置元素,其中pop()==pop(-1)), list.index(value)(查询特定值元素的位置), list.count(value)(计算列表中指定值出现的次数), list.sort(reverse=True)(排序列表,列表会改变,可设定排序方向), 

3.8 python语句操作列表:del语句,del list[num]; in语句(判断值是否在列表中), 

3.9 python函数:sorted()排序;len()获取长度;=(赋值);copy()(复制);(赋值才不会偶联,复制有多种方法,list(),切片)

3.10 创建元组:()创建空元组;元组是以逗号创建并标记的,逗号不能省,括号可以;

3.11 可以将元组赋值给多个变量,进行元组解包;

3.12 创建字典:{}创建空字典;添加元素;

3.13 dict()可以将任意双值子序列转化为字典(嵌套);dict.clear()删除所有元素;dict.get(key, return);dict.keys()获取所有键;dict.values()获取所有值;dict.items()获取所有键值对;dict.copy()复制;

3.14 字典成员函数:dict.update(dict)合并字典;

3.15 del删除指定键的元素;in判断键是否存在;

3.16 创建集合:set()创建空集;{1,2,3}创建集合;

3.17 集合运算:交集&;并集|;差集-;异或集^;<=判断是否子集;>=判断是否超级;>判断是否真超集;

3.18 总结:[]创建列表;逗号创建元组;{}创建字典;注意:由于字典的特性,列表、字典、集合都不能作为字典的键;元组可以;还有不可变的常量。

4.Python外壳:代码结构

Python不使用()、{}来划分代码;而是使用:和代码缩进(缩进决定如何配对)来划分代码。
4.1 使用\连接一行代码

4.2 选择结构:if elif else
if exp:
    if exp:
    elif exp:
    else:
else:
    statement

4.3 python可以直接使用比较符号比较字符串,而perl不行。

4.4 布尔操作符and, or, not;

4.5 循环结构:while for
count = 1
while count <= 5:
    print(count)
    count+=1
   
for的牛逼之处在于:在数据结构长度未知,具体实现未知的情况下遍历整个数据结构,核心是in。
for rabbit in rabbits:
    print(rabbit)
对字典的迭代可能需要用到keys(), values(), items()等成员函数。

4.6 python很奇葩,貌似没有自增自减运算符++、—。

4.7 控制循环:break continue

4.8 循环外的else,循环正常结束(从头到尾),没有使用break中断。

4.9 并行迭代:zip(), 正常for in只能对单个数据结构,而zip()则可以同时迭代多对数据结构。zip()也不局限于for中,它可以迭代任何成组数据结构。

4.10 range()生成自然数序列:
range(start, end, step)
zip()、range()返回的都是可迭代对象,可以用于for in遍历,但是要称为数据实体就必须使用list()、tuple()、set()、dict()转化。

4.11 推导式
看似复杂,其实很简单,[]里,前面是表达式,后面是迭代变量,使用for和if确定迭代变量的值。
列表推导式:
a = [str(b)*3 for b in range(1,6) if b % 2 == 0]
cells = [(a, b) for a in list1 for b in list2 if ...]
字典推导式:
counts = {letter:word.count(letter) for letter in word}
集合推导式
a_set = {num for num in range(1,6) if num % 3 == 1}
生成器推导式(元组),返回一个生成器对象,只能运行一次。
num_thing = (num for num in range(1,6))

 

4.12 函数
4.12.1 创建函数的基本格式:
def func1():
    exp
    return var

4.12.2 python函数参数的传递:位置参数、关键字参数、默认参数
位置参数(*):就是C里面最原始的参数传递形式,按顺序传递,必须弄清定义函数的每个位置参数的意义。
关键字参数(**):就是强行指定传递参数,优先级比位置参数低,一般是不记得函数后面几个参数,就强行指定。
默认参数:是在函数定义时,给函数参数定义的默认值。缺省参数。若调用时提供了参数就会覆盖。

4.12.3 传递可变数量的参数(*)(**)
(*)将一组可变数量的位置参数集合成参数值的元组。
(**)将参数收集到一个字典里

4.12.4 文档字符串 函数开始的一段说明和帮助的字符串

4.13 函数的参数可以是任意的对象,也可以是函数,调用方式是一样的。

4.14 内部函数 在函数的内部定义另外一个函数,目的是避免函数内部的重复。

4.15 匿名函数:lambda()
lambda()是用一个语句表达的匿名函数,目的是用来代替小型函数,临时用一次。
edit_story(stairs, lambda word: word.capitalize() + '!')
lambda函数接受一个参数word,冒号后为函数的定义。

4.16 生成器(就是前面的元组的推导式)
为了迭代庞大的数据结构,而不需要创建序列实体,当序列比较大时通常会创建一个生成器函数。(此时不用return,而是用yield)
def my_range(first=0, last=10, step=1):
    number = first
    while number < last:
        yield number
        number += step
此函数返回一个生成器对象,可用于for迭代。

4.17 装饰器
在不改变源代码的情况下修改已经存在的函数;
装饰器就是一个函数,以一个函数为输入,并返回另一个函数。
结合:*arg和**kwargs;闭包;函数作为参数
def document_it(func):
    def new_function(*args, **kwargs):
        print("Running function:", func.__name__)
        print("Positional arguments:", args)
        print("Keyword argument:", kwargs)
        result = func(*args, **kwargs)
        print("Result:", result)
        return result
    return new_function
装饰器,顾名思义,就是装饰一下已有的函数,返回新的函数。
也可以在定义函数前,添加装饰器的名字,如@document_it,之后定义的函数就会默认使用装饰器。
可以有多个装饰器,靠近函数的装饰器会优先执行。

4.18 命名空间和作用域

4.18.1 怎么查看每个对象的唯一ID值? id()语句

4.18.2 怎么在函数内部读取全局变量? global关键字

4.18.3 怎么获取命名空间的内容?
locals()返回局部命名空间内容的字典
globals()返回全局命名空间内容的字典

4.18.4 两个下划线__的是什么?
在函数内部,func.__name__就是该函数的名称;func.__doc__是文档字符串。
主程序的名字就是__main__.

4.19 异常,try和except处理错误
>>> short_list = [1,2,3]
>>> position = 5
>>> try:
    short_list[position]
except:
    print('Need a psotion between 0 and', len(short_list)-1, 'but got', position)
解释:在try中的代码会被执行,如果存在错误,就抛出异常,然后执行except中的代码;否则跳过except代码块。
except exceptiontype as name获取整个异常对象

4.20 自定义异常
需要自定义异常类,可以继承已有的异常类;
使用时,就raise My_Exception(var)就可以了;

补充:None只能用is语句来识别。

Python语言及其应用 - 知识点遍历的更多相关文章

  1. Python语言程序设计(1)--实例1和基本知识点

    记录慕课大学课程<Python语言程序设计>的学习历程. 实例1:温度转换 #温度转换TempStr = input("请输入带有符号的温度值:") #TempStr是 ...

  2. [Python学习笔记1]Python语言基础 数学运算符 字符串 列表

    这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档: ...

  3. 《Selenium2自动化测试实战--基于Python语言》 --即将面市

    发展历程: <selenium_webdriver(python)第一版>   将本博客中的这个系列整理为pdf文档,免费. <selenium_webdriver(python)第 ...

  4. Python语言初学总结

    课程名称:程序设计方法学 实验1:程序设计语言工具 时间:2015年10月21日星期三,第3.4节 地点:理工楼1#208 一.实验目的 1.深入理解程序设计语言及其几种常见的编程范型: 2.激发学生 ...

  5. 动态语言的灵活性是把双刃剑 -- 以Python语言为例

    本文有些零碎,总题来说,包括两个问题:(1)可变对象(最常见的是list dict)被意外修改的问题,(2)对参数(parameter)的检查问题.这两个问题,本质都是因为动态语言(动态类型语言)的特 ...

  6. 机器学习之支持向量机(四):支持向量机的Python语言实现

    注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的:若对原作者有损请告知,我会及时处理.转载请标明来源. 序: 我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对 ...

  7. mooc-python语言语法week3-6

    week3 1.类型的概念:程序编程不允许有歧义的数据类型存在,所以对数据进行了划分,python语言类型分为,数字类型.字符串类型.元组类型.列表类型.文件类型.字典类型. i:数字类型: pyth ...

  8. Python语言学习之C++调用python

    C++调用python 在C/C++中嵌入Python,可以使用Python提供的强大功能,通过嵌入Python可以替代动态链接库形式的接口,这样可以方便地根据需要修改脚本代码,而不用重新编译链接二进 ...

  9. 全国计算机等级考试二级Python语言程序设计考试大纲

    全国计算机等级考试二级Python语言程序设计考试大纲(2018年版) 基本要求 掌握Python语言的基本语法规则. 掌握不少于2个基本的Python标准库. 掌握不少于2个Python第三方库,掌 ...

随机推荐

  1. apahce

    基本的操作方法:本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令:推荐/usr/local/apache2/bin/apachectl ...

  2. Educational Codeforces Round 16 C

    Description Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column ...

  3. php获取本周和上周的开始日期和结束日期

    <?php header('Content-type: text/html; charset=utf-8'); $date=date('Y-m-d'); //当前日期 $first=1; //$ ...

  4. MySQL的事务

    MySQL的事务 1.事务:事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这一系列操作要么全部执行,要么全部放弃执行. 2.事务具备的四个特性(简称为ACID性): (1)原子性(Atomic ...

  5. 【leetcode❤python】27. Remove Element

    #-*- coding: UTF-8 -*- class Solution(object):    def removeElement(self, nums, val):        "& ...

  6. 【leetcode❤python】13. Roman to Integer

    #-*- coding: UTF-8 -*-#从前向后遍历罗马数字,#如果某个数比前一个数小,则加上该数.反之,减去前一个数的两倍然后加上该数###-----技术规则-----#----------- ...

  7. 3d中的坐标系的概念

    世界坐标系 世界坐标系是一个特殊的坐标系,它建立了描述其它坐标系所需要的参考框架.从另一方面说能够用世界坐标描述其它坐标系的位置,而不能用更大的.外部的坐标系来描述世界坐标系. 物体坐标系 物体坐标系 ...

  8. node-webkit中使用sqlite3(MAC平台)

    前言 最近使用node-webkit开发一款博客发布软件,来替换难用的Windows Live Writer(主要是对Markdown标签的支持很差劲).为了解决博文信息临时保存的问题,想到了使用sq ...

  9. C语言程序设计现代方法_数组(第八章)

    C语言不要求检查下标的范围.当下标超出范围时,程序可能会执行不可预知的行为. 看下这个程序: #include <stdio.h> #define N 10 // int main() { ...

  10. HUD 2203 亲和串

    HUD 2203 亲和串 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768K (Java/Others) [题目描述 - ...