python 入门(2)
来源:互联网 发布:应力张量不变量 知乎 编辑:程序博客网 时间:2024/06/17 06:48
任务
用多行Unicode字符串表示下面的唐诗并打印:
静夜思
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。
- ?不会了怎么办
参考代码:
print u'''静夜思床前明月光,疑是地上霜。举头望明月,低头思故乡。'''
整数,浮点数
整数与整数计算仍然是整数
整数与浮点数计算是浮点数
浮点数与浮点数计算是浮点数
为什么区分整数还是浮点数:sss
整数是准确的二浮点数化为二进制数可能会无线循环,如0.1,
一布尔类型
布尔类型的 and or not 计算
a=true
print a and 'a=true' and 'a=false'
结果是a=true
原因:python 把 空字符串,0,none看成false
其他都看成是true
根据短路计算: a and b时 当第一个是false不管第二个怎么计算都是false,所以使用a
当第一个是true,那么结果取决于第二个,所以使用b
同理a or b 第一个是true 不管第二个怎么计算都是true 使用a
第一个是false 那么结果取决于b 所以使用b
二 list : 很简单 就是L[]方括号 索引 L[0],L[1],L[2]从零开始 切记不要越界
也能从后开始查,如L[-1],L[-2],L[-3]
在List中加入元素,用两个方法append,insert.
append直接把元素放到L末尾
insert把元素放到L任何位置,使用insert(index,elem)
任务
注意右边编辑器代码中 list 如下:
L = ['Adam', 'Lisa', 'Paul', 'Bart']
Paul的索引是2,Bart的索引是3,如果我们要把Paul和Bart都删掉,请解释下面的代码为什么不能正确运行:
L.pop(2)L.pop(3)
怎样调整代码可以把Paul和Bart都正确删除掉?
- ?不会了怎么办
当首先删除索引为 2 的Paul时,L变成了:
['Adam', 'Lisa', 'Bart']
这时,注意到Bart的索引已经从原来的3变成2了!
参考代码:
L = ['Adam', 'Lisa', 'Paul', 'Bart']L.pop(3)L.pop(2)print L
tuple 不能被修改,删除,添加,一旦做完就无法修改 定义用() list用【】而且必须要有 ","
tuple 在特殊情况下 可变,如('aa','dd',['dsad','dsa'])
python中if,for while 没有()只有:+四个空格缩进,注别用tab键
if中软还有其他if else 在PYTHON中药用到elif 同样要缩进4个空格
break 退出本个循环,continue 退出本次循环
dict 类似于java中的 map,同理也是集合使用函数len()可以算出其大小
可以简单地使用 d[key] 的形式来查找对应的 value,这和 list 很像,不同之处是,list 必须使用索引返回对应的元素,而dict使用key:
访问不光可以通过dict[key]的方法,还可以通过dict.get(key)如果没有这个key 返回的是none
dict的更新直接用dict[key]更新,
set类似于java的set 无序,不重复 使用 elem in set 返回的是否是true 来判断是否有这个元素
set的更新和list类似,set 用add(), remove()删除add()可以直接用,remove()需要判断,是否有这个序列
函数用 def +函数名+:编写, 函数可以传递多个参数,同理也可以返回多个参数,但是返回的返回值,你用print 打印出来是tuple,所以
之前你看到的多个返回值都是假象,实际上是通过tuple 返回出来的
def move(n, a, b, c): if n ==1: print a, '-->', c return move(n-1, a, c, b) print a, '-->', c move(n-1, b, a, c)move(4, 'A', 'B', 'C')
默认的形参与JAVA不同,JAVA一般在构造中写,而 其实在引入的时候写如def mama(age=40,sex='女') 这让我深深的怀念起了C语言~~ 猫叔一定是C出身
python 的形参是可变的 +*号 , 其实类似于JAVA将一个类或者集合传进函数
切片: 切片其实是更方便的一种遍历(python的遍历越学越方便)
list(m:n:t),m是从M开始,n是遍历n个,t每隔t个遍历一下(起始点也需要遍历)此外还可以倒序遍历如之前的list[-m],
list(-m:n:t) 从倒数M开始遍历
set同理
福利:字符串也可以进行切片操作
现在开始讲真正的迭代
1. 有序集合:list,tuple,str和unicode;2. 无序集合:set3. 无序集合并且具有 key-value 对:dict
引索迭代 enumeranate 其实就是JAVA中的枚举,不吐槽原理:把每个elem 与一个index通过tuple绑定到一起
[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]
迭代 dict中的 value 我们用老方法 需要先迭代出KEY 如今 可以新方法 values 或者 intervalues(效率高)当要迭代出 [key,value]时候 需要 使用 items 或者 interitems
生成列表:python很神奇的地方,应该用法很方便。
print [x*(x+1) for x in range(1,100,2)] 这样便生成 一个list 等同于
L[]
for x in range (1,100,2)
L.append x(x+1)
还可以添加if 判断 还可以多重循环
例子:print [a*100+b*10+c for a in range(1,10) for b in range(0,10) for c in range(1,10) if a==c]
复杂表达式
使用for循环的迭代不仅可以迭代普通的list,还可以迭代dict。
假设有如下的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>
0 0
- python 入门(2)
- Python入门(2)
- python入门(2)
- python入门笔记(2)
- Python入门学习(2)
- Python 入门(2)--数据类型和变量
- Python快速入门(2)练习题
- 菜鸟python入门爬虫手记(2)
- Python爬虫----爬虫入门(2)
- 入门python-异常(2)
- python opencv 入门 加载视频 (2)
- python基础入门学习笔记(2)
- Python爬虫入门2--请求(HTTP)
- python快速入门(2)List
- Python入门2
- python入门2
- Python基础入门(2)
- python入门篇-2
- Android 百度地图可以定位,但无法显示地图 的解决办法
- Bezier曲线的几何连续性
- Objective-C 程序设计 第六章
- 数据上报-上报设计
- Linux下能够创建的最大线程数
- python 入门(2)
- 运算符优先级记载
- android 问题汇总
- iOS开发-代码规范总结
- CMake的交叉编译问题(Linux x86 - Linux arm11)
- @GeneratedValue
- Eclipse方便的管理Tomcat (Eclipse + WTP + Tomcat 配置 )
- hbase分页查询
- 九度考研真题 2003-2华科1186:打印日期