python基础知识点:与java类比

1.特点:优雅,明确,简单

2.适合的领域

A.web网站和各种网络服务

B.系统工具和脚本

C.作为胶水语言把其他语言开发的模块包装起来方便实用

3.不适合的领域

贴近硬件的代码(首选C)

移动开发

游戏开发:(c,C++)

4.对比


虽然运行速度慢:但是现在CPU的计算能力很强大,因此本身的影响不大,瓶颈在于带宽和数据库的访问,这些问题每个语言都会遇到

5.安装Pytlhon(跨平台)

  2.73.3 不兼容:因为一些第三方库不兼容3.3版本

官网:www.python.org 选择对应的平台进行下载

Windows64位下载:

下载完成后傻瓜式安装

然后配置Python.exe进行环境变量的配置

打开CMD 输入python


以下为总结的与java不同的基础知识点

1.字符串

用’’或者””表示

‘Learn “打印双引号”’  

“python’打印单引号’”  

‘learn\’单引号\’\”双引号\”’

\\表示\本身

\n换行

\t 表示一个制表符

包含很多转义符: r’\(--)/\(--)/’

多行字符串 ‘’’第一行

第二行

第三行’’’

Unicode表示:u’中文’

2.布尔为TrueFalse 首字母大写 0、空字符串''None看成 False,其他数值和非空字符串都看成 True

3.空值 表示为None

4.and,or,not 具有短路运算特性

5.Print打印语句

print ‘hello world’,100+100
	hello world 200  #运行结果 , 会变成一个空格 #为注释

6.如果出现UnicodeDecodeError 是因为.py文件保存的格式有问题,可以在文件的第一行添加注释

# -*- coding: utf-8 -*-


目的是告诉python解释器,Utf-8编码读取源代码 

7.list 有序集合

	_list = [1,1.0,True,'hello']
	print _list[0] #打印第一个1
	print _list[-1] #打印最后一个元素 -2为倒数第二...
	_list.append(“新元素”) #添加到最后
	_list.insert(0,“插入到第一个”)
	_list.pop()#删除最后一个 带参数表示要删除的索引
	_list[-1] = “新元素”

8.tuple 有序列表,元组,list不同的是 tuple一旦创建就不能修改了

	_tuple = (1,True,1.0,’tuple)
	_tuple = (1,) #单元素添加, 


9.If

具有相同缩进的代码被视为代码块严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格

	if elif elif # if else if

10.for

	L = [“name1”,’name2’]
	for name in L: #遍历tuple类似

11.while 没啥不同

	while true:#死循环

12.dict 类似于javamap

	d = {
	“dog”:0,
	“pig”:1,
	“me”,100
	}
	d[“pig”] #访问1 存在返回 不存在报错:KeyError
	d.get(“pig”) #访问2 存在返回  不存在返回None
 
	if “pig” in d:
		print d[“pig”]


dict特点:

A.查找速度快,无论元素多少,查找速度一样快

B.占用内存大,浪费内容

C.dict按照key查找,在一个dictkey不可以重复

D.Key-value序对是没有顺序的

13.Set

元素不能重复

	S = set([‘A’,2,”b”]) #创建方式是往()中传入一个list,list的元素将作为set的元素访问
	‘A’ in s # True
	‘C’ in s #false
	S.add(3)
	S.remove(‘A’)#加判断 不然会报错 KeyError


特点:

A.set的内部结构和dict类似,区别是没value,因此判断一个元素是否在set中的速度很快

B.Set存储的元素是没有顺序的 和dict类似

 

14.函数

查询预定义的函数文档链接:http://docs.python.org/2/library/functions.html#abs

也可以通过help(abs)查看abs的信息

 

在调用函数的时候如果传入的参数数量不对,会报TypeError错误

如果传入的参数类型不能被函数接受,也会报TypeError

 

编写函数:

	def method_name(x):
	return 1


如果没有return语句,函数执行完毕后会返回及结果,只是结果为None return None 等于 return

 

Python函数可以返回多值

	def demo():
	return 1,2
	x,y = demo() #但其实返回的是一个tuple 内部有加工处理


 

函数默认值Demo:

	def green(name='world'):
    	print 'hello',name
	green()
	green(u"姓名")

 

可变参数:

	def fn(*args):#args为tuple 可传入0 1,n个参数
    	print args


 

15.list进行切片

list前几个元素

两种方法

A.

	r = []
	n = 3
	for i in range(n)
	R.append(l[i])

B.

	L[0:3]#从L集合中提取0到3的数据包0不含3 如果从0开始还可以省略0 L[:3]
	L[:]#从头到尾 因此L[:]相当于复制了一份L
	L[0:4:2]#从0开始到4(不含4)每2个元素取第一个


 

16.迭代

有序集合:listtuplestrunicode

无序集合:set

无序集合并且具有 key-value 对:dict

 

索引迭代:需要在迭代的时候拿到有序集合的索引

 

	L = ['Adam', 'Lisa', 'Bart', 'Paul']
         for index, name in enumerate(L):#enumerate()将有序集合变成了类似
	#[(k1,v1),(k2,v2)]因此迭代的每一个其实是tuple
    	print index, '-', name
 
	for t in enumerate(L)
	print t[0],’-’,t[1]

 

 

迭代dictvalue

A.dictvalues()方法,dictvalue生成一个list

B.Dictitervalues()方法,效果一样

区别:

A.values()方法实际上把一个dict转换成了包含valuelist

B.Itervalues()方法不会转换,它会在迭代过程中依次从dict中取出value,所以itervalues()方法比values()方法节省了生成list所需要的内存

C.dictk v一起迭代 通过dictitems()方法

	for key, value in d.items():
    		print key, ':', value


17.生成列表

A.range(1,100)#生成一个[1....100]list

B.[x * x for x range(1,11)] #[1,4,9,16....]写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把list创建出来

18.复杂表达式

假设有如下的dict

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

完全可以通过一个复杂的列表生成式把它变成一个 HTML 表格:

	tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()]
	print '<table>'
	print '<tr><th>Name</th><th>Score</th><tr>'
	print '\n'.join(tds)
	print '</table>'

注:字符串可以通过 % 进行格式化,用指定的参数替代 %s。字符串的join()方法可以把一个 list 拼接成一个字符串。

把打印出来的结果保存为一个html文件,就可以在浏览器中看到效果了:

<table border="1">

<tr><th>Name</th><th>Score</th><tr>

<tr><td>Lisa</td><td>85</td></tr>

<tr><td>Adam</td><td>95</td></tr>

<tr><td>Bart</td><td>59</td></tr>

</table>

 

EG1:

请编写一个函数,它接受一个 list,然后把list中的所有字符串变成大写后返回,非字符串元素将被忽略。

 

def toUppers(L):
    return [x.upper() for x in L if isinstance(x,str) ]
 
print toUppers(['Hello', 'world', 101])


 

EG2:

利用 3 for循环的列表生成式,找出对称的 3 位数。例如,121 就是对称数,因为从右到左倒过来还是 121

print [x*100 + y * 10 + z for x in range(1,10) for y in range(1,10) for z in range(1,10) if x == z ]











猜你喜欢

转载自blog.csdn.net/weixin_37699212/article/details/73334177