【学习笔记】老王Python-基础篇 python 2.x 【推荐指数2星】

lesson-1

脚本解释型语言的内部机制
在运行脚本之前,得到结果之后
1.Python先将脚本编译成字节码 文件(pyc,pyo)
2.python虚拟机解释器解释并运行字节码文件

编译型语言的内部机制
1.先将源代码编译成机器码文件,生成可执行文件
2.运行可执行文件

如果代码中出现中文,一定要在代码首行 #coding=utf-8
在代码块中,三引号可以用作注释comments

Python是动态语言,是弱类型语言,即执行过程中确定变量的数据类型,分配内存。而想C,C++,java等都是静态语言,强类型的,在编译期间必须明确数据类型。在声明变量时必须明确指定数据类型。否则报错。

注明程序主体:if __name__=='__main__':

变量与引用,标签的理解:d=4
我是变量d,因为字符串对象‘4’赋值到我这里来了,我被创建出来了;我这里存了一个字符串对象的位置(地址),就是‘4’的位置;我没有存字符串对象‘4’的数据,这就是引用;
我是字符串对象‘4’,我被创建出来了,我赋值给了变量d

多重赋值:

a,b,c = "str1","str2",4

中文字符串长度判断问题:(在Python 3.x中已经改为统一了,不再出现下述问题)

 a='哈'
 len(a)=3
 a=u'哈'
 len(a)=1
 b='哈哈哈'
 c=b.decode('utf-8')
 print(c)

字符串与转义字符\反斜杠 ,及 r

>>> print('hello\n')
hello

>>> print('hello\n world')
hello
 world
>>> print('hello\\n world')
hello\n world
>>> print(r'hello\n world')
hello\n world
>>> print(r'hello\\n world')
hello\\n world
>>> 

lesson-05 Python数据类型

2.数据类型的组成

组成3部分。
身份 id方法来看一看他的唯一标示符,内存地址靠这个哦!
类型 type来看一看。
值 数据项。

某书里的傲娇结论:python里一切都是指针,所以不用再考虑指针这个问题了!

3。常用基本数据类型.

int 整型
boolean 布尔
string  字符串
list 列表
tuple 元祖
dict 字典

4.数据类型的可变和不可变

不可变类型:intstring,tuple
可变类型:list,dict

5.变量之赋值一切皆为引用,动态性与动态类型之为何不再动态

正确使用help()的不同:
>>> help(format)
Help on built-in function format in module builtins:

format(value, format_spec='', /)
    Return value.__format__(format_spec)

    format_spec defaults to the empty string

>>> help(str.format)
Help on method_descriptor:

format(...)
    S.format(*args, **kwargs) -> str

    Return a formatted version of S, using substitutions from args and kwargs.
    The substitutions are identified by braces ('{' and '}').

lesson-09 列表

1 切片:

a = [1,2,3,4,5,6,7]

正向索引
反向索引

a[-1:-4:-1]=[7,6,5]  /反向索引时注意方向
>>> a[-1:-4:-1]
[7, 6, 5]
>>> a[-5:-1:1]
[3, 4, 5, 6]

2添加操作:

  • 生成一个新的列表

Extend 接受参数并将该参数的每个元素都添加到原有的列表中,原地修改列表而不是新建列表

id(a)
a.extend(b)
id(a)

Append :添加任意对象到列表的末端

Insert: 插入任意对象到列表中,可以控制插入位置。

3 修改:

修改列表本身只需要直接赋值操作就行。

A = [1,2,3]

A[0]=’haha’

4 删除操作:

Del :我们通过索引删除指定位置的元素。

Remove:移除列表中指定值的第一个匹配值。如果没找到的话,会抛异常。

Pop:返回最后一个元素,并从list中删除它。

5 成员关系:

In, not in我们可以判断一个元素是否在列表里。

返回一个bool类型,元素在列表里返回true,否则返回fasle.

6 列表推导式:

[expr for iter_var in iterable] 

1首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。

比如我们要生成一个包含1到10的列表

[x for x in range(1,11)]

Range(1,11)


[expr for iter_var in iterable if cond_expr]

2加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。

要生成包含1到10的所有奇数列表。

range(1,11,2)

[x for x in range(1,11) if x % 2 == 1]

7 排序翻转:sort,reverse

a = [33,11,22,44]

这个方式直接修改原列表。他的返回值为none,所以

b = a.sort()

print b 输出的内容是None

我们直接输出a列表变量

list的reverse函数:反转一个list, 他的返回值为none

比如上面的列表a

b = a. reverse()

print b 输出的内容是None

直接看a列表变量能看到翻转的效果。

1.内置list方法
a=”asd”
list(a)
返回一个列表,参数是可迭代对象,里面输出的内容还是保持了传入的可迭代对象的元素顺序。
如果参数为空,则返回一个空列表。

2.小技巧之删除
del a 删除列表对象的引用
del a[:]清空列表对象里的元素

lesson-11 元素和集合

一 元组:

特点:

1 有序的集合

2 通过偏移来取数据

3 属于不可变的对象,不能在原地修改内容,没有排序,修改等操作。

tuple类型转换

那为什么有列表还要有元组呢

元组不可变的好处。保证数据的安全,比如我们传给一个不熟悉的方法或者数据接口,
确保方法或者接口不会改变我们的数据从而导致程序问题。

def info(a):
    '''一个我们不熟悉的方法'''
    a[0] = 'haha'

a = [1,2,3]

info(a)

print a

二 集合:集合是没有顺序的概念。所以不能用切片和索引操作。

1 创建集合。set():可变的 不可变的frozenset():
2 添加操作: addupdate
3 删除 remove
4 成员关系 in,not in
6 交集,并集,差集 & | -
7 set去重  列表内容元素重复

encoding=utf-8

可变集合

info = set('abc')
info.add('python')##添加单个对象到集合里

print info

info.update('python')##把对象里的每个元素添加到集合里

print info

info.remove('python')

print info

不可变集合

t = frozenset('haha')##不能进行添加,修改和删除的操作

成员操作 in,not in

print 'a' in info

print 'h' in t

print 'jay' not in info

判断2个集合是否相等,之和元素本身有关,和顺序无关。

print set(‘abc’) == set(‘cba’)

并集,交集,差集

print set('abc') | set('cbdef')##并集

print set('abc') & set('cbdef')##交集

print set('abc') - set('cbdef')##差集
所以可以用set的特性给list去重,先用set(a)将列表a转为set去重,然后在将set集合转为list(set)

liststr = ['haha','gag','hehe','haha']

for循环

m = []

for i in liststr:
    if i not in m:
        m.append(i)

print m

m = set(liststr)

print list(m)

lesson-12 字典

字典:

字典是无序的,它不能通过偏移来存取,只能通过键来存取。

字典 = {‘key’:value} key:类似我们现实的钥匙,而value则是锁。一个钥匙开一个锁

特点:

内部没有顺序,通过键来读取内容,可嵌套,方便我们组织多种数据结构,并且可以原地修改里面的内容,

属于可变类型。

组成字典的键必须是不可变的数据类型,比如,数字,字符串,元组等可以作为key,而列表等可变对象不能作为键.此处要注意元组的组成元素如果包含可变对象类型,也无法作为key会报错。

1 创建字典。{},dict()

info = {'name':'lilei', 'age': 20}

info  = dict(name='lilei',age=20)

2 添加内容 a['xx'] = 'xx'

比如  info['phone'] = 'iphone5'

3 修改内容 a['xx'] = 'xx' ,

info['phone'] = 'htc'

update 参数是一个字典的类型,他会覆盖相同键的值

info.update({'city':'beijing','phone':'nokia'})

htc 变成了nokia了

4 删除 del,clear,pop

del info['phone'] 删除某个元素

del info 删除info变量对字典对象的引用

info.clear()删除字典的全部元素

info.pop('name')    传入key,返回对应的value,并且在dict中删除该key-value对

list.pop()与dict.pop()方法的区别,都是删除指定值并返回,
但如果dict.pop(index)的index不存在则直接抛出异常,
而dict.pop(key)不存在可以返回人为指定的值,而不抛异常

5 in 和 has_key() 成员关系操作

比如:

1 phone in info

2  info.has_key('phone')

6 keys(): 返回的是列表,里面包含了字典的所有键

values():返回的是列表,里面包含了字典的所有值

items:生成一个字典的容器:[()]

7 get:从字典中获得一个值

info.get('name')

info.get('age2','22')    dict.get()与dict.pop()方法相似,
如果key不存在,则默认返回NoneType类型,
当然也可人为指定key不存在时返回某个值。

lesson-15 再议数据结构与数据类型

1.list,dict,tuple之它们其实是好基友
1.1 没有最优秀的数据结构,只有最适用的
1.2 了解每个结构的特点才能活学活用
1.3 它们相互转换如此简单

2.“推倒式”(列表推导)与再议

[x for x in range(101]
第一部分 []
第二部分 x
第三部分 for x in range(101)

[x+1 for x in range(101] 列表生成器等同于如下
for x in range(101)
    new_list.append(x+1)
print(new_list)

3.排序

3.1 sorted与ob.sort()区别
3.2 list之sort方法
    3.2.1 key最好用
    3.2.2 cmp是什么(a>b) - (a<b)

对a=[(‘a’,2),(‘b’,3),(‘c’,5)] 的数字部分进行排序
a.sort(key=lambda x:x[1],reverse=True)

4.字符串模板应用—字符串初始化的几种推荐方式
‘%s is a %s’ %(‘i’,’boy’)
‘this is {1} {0}’.format(“apple”,”my”) //在{}内指定位置顺序
‘{who} is a {gender}’.format(‘who’=’i’,’gender’=’boy’) //通过字典dict指定
‘{} is a {}’.format(‘i’,’boy’)

4.1 回忆一下,字符串模板有哪几种方式
4.2 典型应用1:html模板
4.3 针对性比强大更为重要

lesson-18 习题练习
字符串大小写互换—a.swapcase()
判断是否数字——-a.isdigit()
总结字符出现次数—a.count(‘a’),技巧是先将原字符串转为set获取所有字符,这样就不需要判断原字符串的字符多样性。print(dict([x a.count(‘x’) for x in set(a)]))

case-1.4 请去除a字符串多次数显的字母,仅留最先出现的一个,例

'abcabb',经过去重后,输出'abc'
a='jskldjsajjlasjefnsdf'
a_list=list(a)  #转换为set去重,再转为list
set_list = list(set(a_list))    
set_list.sort(key=a_list.index)     #对去重以后的list进行排序
print(''.join(set_list))
case-1.5 数字,大写,小写排序
a = 'aAsmr3idd4bgas7Dlsf9cAF'
l = sorted(a)
a_upper_list = []
a_lower_list = []

for x in l:
    if x.isupper():
        a_upper_list.append(x)
    elif x.islower():
        a_lower_list.append(x)
    else:
        pass

for y in a_upper_list:
    y_lower=y.lower()
    if y_lower in a_lower_list:
        a_lower_list.insert(a_lower_list.index(y_lower),y)
print(''.join(a_lower_list))

case-1.9 输出a字符串中出现频率最高的字母
a = 'aAsmr3idd4bgas7Dlsf9cAF'
l=([(x,a.count('x') for x in set(a))])
l.sort(key=lambda k:k,reverse=True)
print(l[0][0])

case-1.8 在Python命令行里,输入import this以后出现的文档,统计该文档中,'be' ‘is’ 'than'的出现次数
import os
m = ls.popen('python -m this').read()
m= m.replace('\n','')
l = m.split(' ')
print([(x,l.count(x) for x in ['be', 'is','than'])])

case2.1清楚字符串中的数字,并排序
a = 'aAsmr3idd4bgas7Dlsf9cAF'
a=''.join([x for x in a if not a.isdigit()])
print(a)
print(sorted(a,reverse=True))

lesson-20 函数基础课程

1.函数是抽象的第一步
1.1有关高压锅
1.2函数时抽象出来的结构,是总结,是方法
1.3多用函数
2.如何定义函数
2.1 def是关键词,括号冒号永不忘,无缩进无真相
2.2 没有return的函数,不是大丈夫–不是真函数
2.3 不写doc的函数,就像没有性别的人类

3.5 *和,猩猩是字典,星是元组

case1
def testDict(**a):
    return a
print(testDict(a=1,b=2,c=3,d=4))
------output------  
>>> print(testDict(a=1,b=2,c=3,d=4))
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> 
以key=value的形式作为参数输入,猩猩函数会自动将其识别为key-value键值对,当然必然要求key是唯一的,否则会报错。
>>> print(testDict(c=1,b=2,c=3,d=4))
SyntaxError: keyword argument repeated
>>> 

case2:猩*是元组
def test2(*z):
    return z

>>> print(test2(1,2,3,4,5,[1,2,3,5]))
(1, 2, 3, 4, 5, [1, 2, 3, 5])
>>> 

case3 两者的结合体
def test3(*z,**a):
    return z,a
print(test3(1,2,3,4,5,[1,2,3,5],a=1,b=2,c=3,d=4))
*****output******
>>> print(test3(1,2,3,4,5,[1,2,3,5],a=1,b=2,c=3,d=4))
((1, 2, 3, 4, 5, [1, 2, 3, 5]), {'a': 1, 'b': 2, 'c': 3, 'd': 4})
>>> 

注意这种情况,,与*参数顺序有先后要求。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、Python基础概述 二、Python基础教程 老王Python教程 基础 基础1-福利课python先入为主上 基础2-福利课-python先入为主下 基础3-虚拟机安装xubuntu开发环境 基础4-linux基本命令以及开发环境 基础5-python基本数据类型讲解1.1 基础6-福利课-python基本数据类型讲解1.2 基础7-python基本数据类型讲解1.3 基础8-python基本数据类型习题解答 基础9-python基本数据结构-列表 基础10-python基本数据结构-列表应用 基础11-python基本数据结构-元组和集合 基础12-python基本数据结构-字典 基础13-python基本数据结构习题解答 基础14-答疑课-python里面这些难缠的符号们 基础15-答疑课-再议数据结构与数据类型 基础16-python语句1.1 基础17-python语句1.2 基础18-基础综合习题 基础19-python语句与数据结构应用 基础20-python函数 基础21-文本操作应用 基础22-文本操作应用解答 老王Python教程 进阶 进阶1-进阶承上启下 进阶2-函数第一节 进阶3-函数第二节 进阶4-函数第三节 进阶5-函数第四节 进阶6-函数周末习题 进阶7-面向对象第一节 进阶8-面向对象第二节 进阶9-函数周末习题讲解1.1 进阶10-周末习题讲解1.2 进阶11-面向对象第三节 进阶12-面向对象周末习题讲解 进阶13-模块第一节 进阶14-模块第二节-常用模块讲解 进阶15-异常处理1.1 进阶16-异常处理1.2 进阶17-异常处理1.3 进阶18-周末异常习题探讨 进阶19-多线程1.1 进阶20-多线程1.2 进阶21-多线程1.3 进阶22-习题讲解复习 进阶23-用协程解决相关问题 进阶24-正则表达式1.1 进阶25-正则表达式1.2 进阶26-socket1.1 进阶27-高性能的多线程网络资源访问 进阶28-高性能的多线程网络资源访问第二节 进阶29-http相关讲解 进阶30-wsgi讲解 进阶31-进阶综合习题应用 进阶32-综合习题讲解 进阶33-进阶项目讲解第二节 进阶34-项目讲解第三节 老王Python教程 项目 项目1-django博客第一节 项目2-django博客第二节 项目3-django web编程扫盲之二 项目4-django数据库操作第一节 项目5-django数据库操作第二节 项目6-django速攻之数据提交,显示 项目7-django速攻之衔接 项目8-tornado第一节扫盲 项目9-tornado第二节 项目10-tornado第三节 项目11-tornado项目第四节 项目12-tornado项目第五节 项目13-tornado第六节 项目14-整站爬虫 项目15-聊天室

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值