[关闭]
@XQF 2016-09-29T12:20:32.000000Z 字数 3254 阅读 1662

用Python玩转数据

Python学习笔记 python mooc



input 与raw_input


  1. input可以输入纯数字,float 或者int类型,但是raw_input输入的时候只能是字符串。
  2. input也接受表达式和字符串,1+2会直接输出结果,当然要是想输入字符串就必须手动加引号(123)

函数返回值


嗯,python的函数返回值是不需要显式定义的,应该是根据返回的值自动判断类型,于是在def关键字前面是没有任何的语句的。
True,False首字母是大写,真是有点猝不及防

函数作为参数


  1. def addMe(x):
  2. return x + x
  3. def self(f, x):
  4. print f(x)
  5. self(addMe, 5) # 函数名

匿名函数


不得了呀

  1. r=lambda x:x+x # 这样就定义了
  2. print r(5)

递归中的汉诺塔问题


之前一直没有理解,这么简单的递归也是完成了夙愿

  1. def h(a, b, c, n):
  2. if n == 1:
  3. print a, '->', c
  4. else:
  5. h(a, c, b, n - 1)//把a的上面n-1(还剩一个)个盘子通过c转移到b
  6. print a, '->', c//a的最后一个盘子放到c
  7. h(b, a, c, n - 1)//bn-1个盘子(所有,一个都不剩)通过a全部放到c
  8. h('a', 'b', 'c', 4)

global 语句


这个主要是用在变量名重复的时候,不过没什么意思呀,要是在函数中使用同名全局变量(使用后全局变量在函数也可以进行改变),回到主函数中改变的值仍有效

  1. def f(x):
  2. global a
  3. print a
  4. a=5
  5. print a+x
  6. a=3
  7. f(8)
  8. print a

3
13
5

获取本地数据(文件读写)


文件写入的时候不会自动有换行,同时读出的时候也会把换行符读出来

f=open(r'hh.txt','r')
f.read()
f.read() # 这一句是没有作用的,因为经过上一句后文件指针已经到达文件尾部。
f.close();

数字和字符串之间是不能自由转换的,不能像java那样,但是可以是C++那样通过函数进行转换。str()函数

获取网络数据


基本的网路数据获取,获取百度首页的内容并写进一个文件中,当然文件的分析主要是通过一些类或者正则表达式解决问题。

  1. import urllib
  2. r=urllib.urlopen('http://www.baidu.com/')
  3. html=r.read()
  4. f=open(r'D:\TestPython\testBaidu.html','w')
  5. f.write(html)
  6. f.close()

序列


列表的切片:印象深刻的是[::]初次相见是佳慧的代码,原来是这样的里面的数字应该就是从头开始的步长,而要是数字为负数则是输出的时候逆序。

  1. # -*-coding:utf-8-*-
  2. week = ['Monday', 'Thuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
  3. print week[1], week[-2], '\n', week[1:4], '\n', week[:6], '\n', week[::-1], '\n'
  4. print '------------------------------------------------------'
  5. print week[::1]
  6. print week[::2]
  7. print week[::-2]

输出:

Thuesday Saturday
['Thuesday', 'Wednesday', 'Thursday']
['Monday', 'Thuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
['Sunday', 'Saturday', 'Friday', 'Thursday', 'Wednesday', 'Thuesday', 'Monday']

['Monday', 'Thuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',
'Sunday'] ['Monday', 'Wednesday', 'Friday', 'Sunday'] ['Sunday',
'Friday', 'Wednesday', 'Monday']

一个数据重复N遍

a='334'
print a*3

字符串


字符串是不是标题格式居然都有函数,简直不能相信。

  1. string ="what dou think of this saying\"No pains ,No gain\""
  2. string1 ='what dou think of this saying\"No pains ,No gain\"'

双引号里面包含双引号还是要处理一下,单引号里面包含双引号就不用了。
经过探索,发现只要里面的引号和外面的引号相同就必须处理,不同就不用处理。

  1. num='0123416'
  2. a1=num.index('1',0,len(num)) # 从左边开始找第一个
  3. b1=num.rindex('1',0,len(num)) # 从右边开始找第一个
  4. print a1,' ',b1

单个字符判断函数:

原来所谓的标题格式就是所有单词的首字母都要大写,原来如此。string.title()将一个字符串转成标题格式。

列表


对一个列表里面的元素可以任意赋值

  1. a=list('hello')
  2. print a
  3. a[1]=2
  4. print(a)
  5. b=['j4gijo4jgio','nreigu']
  6. print b

还敢不敢再乱一点,抓狂

  1. a=[1,4,5,6,2,4,5,6]
  2. print a
  3. a.pop()# 去掉末尾
  4. print a
  5. a.pop(0)#去掉开头
  6. print a
  7. a.append(10)# 在末尾加上10
  8. print a
  9. print sum(a)

逆序输出:

  1. a=[1,4,5,6,2,4,5,6]
  2. a.sort(reverse=True)
  3. print a

列表解析:
一般是在列表内容需要改变的时候使用,同时经常和for以及可迭代的序列一起使用。另外还可以加条件

  1. a=[x for x in range(10)]
  2. print a
  3. a=[x*3 for x in range(10)]
  4. print a
  5. a=[x for x in range(10) if x%2==0]
  6. print a

元组


切片,。,len,逗号创建元祖,元祖不可变

  1. a=(1,3,4,5)
  2. print a[1:]
  3. b=2,
  4. print b

sort函数使用的差异,后者只是新建一个副本进行排序,而原本的列表不变

  1. a = [2, 2, 4, 6, 7, 84, 2, 4, 5, 6, 7]
  2. a.sort()
  3. print a
  4. b = [2, 2, 4, 6, 7, 84, 2, 4, 5, 6, 7]
  5. print(sorted(b))

作为形式参数,原来可变参数是由元组来实现的

  1. def func(a,*b):
  2. print a #位置参数
  3. print b #一起传递
  4. func(1,34,5,6,6,7,8)
  1. def func():
  2. return 1,2,3
  3. print func()

返回值为元组的函数

字典


生成字典的几种方式

  1. a={'XQF':12,'WLY':21}
  2. print a['XQF']
  3. b={('xqf',12),('wly',11)}
  4. c=dict(b)
  5. print c['xqf']
  6. d=dict(xqf=12,wly=11)
  7. print d['xqf']
  8. e={}.fromkeys(('xqf','wly'),3000)# 设置默认值
  9. print e
  10. keyss=['xqf','wly']#受不了了,这么多
  11. ages=[12,12]
  12. f= dict(zip(keyss,ages))

字典作为参数(可变长关键字参数)

  1. def func(aa,*b,**c):
  2. print aa
  3. print b
  4. print c
  5. func('hello','jjj','jjj',a=2,b=2)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注