Python的列表和元组
其实就是数组,但它可以保存任意类型的Python对象,都还是从索引0开始。但还是有所不同的。列表元素用[]包括,元素的内容及个数可变,这个和C#的链表很像呐!而元组元素用()包括,不可更改,但其内容可以。元组相当于是只读列表,可通过[:]和[]得到其子集,下面是具体用法:
- 列表用法
list=[1,2,3,4,5,6]
list 输出[1,2,3,4,5,6]
list[0] 输出1
list[2:]从下标为2的地方开始输出[3,4,5,6]
list[:2]输出前两个[1,2],这种语法很好玩啊
list[0]=7
list[0] 输出7
list 输出[7,2,3,4,5,6]
- 元组用法
list=('zhangsan','lisi',2,'nihao')
list 输出('zhangsan','lisi',2,'nihao')
lsit[:2]输出前两个('zhangsan','lisi')
list[0] 输出'zhangsan'
list[0]=d就会报错,不能修改其值
Python字典
Python的字典是key-value结构,其元素是用{}包括,其具体用法如下:
dict={'Ip':'192.158.3.3','port':8888}
dict 输出{'Ip': '192.158.3.3', 'port': 8888}
dict.keys() 输出dict_keys(['Ip', 'port'])
dict.values() 输出dict_values(['192.158.3.3', 8888])
dict['Ip'] 输出'192.158.3.3'
Python使用缩进而不是{}
这一点确实是有点不便呐!因为之前都是用{},但使用缩进代替大括号的感觉也还好吧!
Python的控制结构
- if语句
输出的结果是NO,因为1不等于3嘛!在这里要注意的是,Python的代码并没有用{}括起来,这要和C#区分开来。if(1==3): print 'OK' else: print 'NO'
- while循环
这段代码的输出结果就是0,1,2,3,4。这和其他语言是一样的,没有什么不同,只是代码没有用大括号包括起来而已。i=0 while(i!=5): print i i+=1
- for循环
Python的for循环和c#中的for循环是不一样的,而是和C#的foreach相似。
输出结果就是把list的各个元素依次输出。这个有一个神奇的地方在于如果在print 后面加一个逗号的话,输出的结果就会在一行了。list=[1,3,34,45,46456,6,768,7,8,98] for item in list: print item 输出结果如下 1 3 34 45 46456 6 768 7 8 98
造成这个结果的唯一不同就只是因为一个逗号,是不是蛮神奇的?不过,如果你想实现这个功能的话,也是蛮简单的,可以试试。list=[1,3,34,45,46456,6,768,7,8,98] for item in list: print item, 输出结果如下 1 3 34 45 46456 6 768 7 8 98
Python那些神奇的函数
- 神奇的range()函数
这个函数以前玩过,但好久不见,现在差不多已经忘记了。这个函数可以生成一个数值范围,比如说传个3,它就会生成0,1,2。同样传个5,它就会生成0,1,2,3,4。是不是很方便呢?
for item in range(5):
print item,
输出结果如下
0 1 2 3 4
- 返回对象长度或个数的len()函数
print(len(range(5)))
输出的结果就是:5
- 神奇的enumerate()函数
list=[1,345,657,68,4,980,9,-0,7]
for index,value in enumerate(list):
print index,value
这个的输出结果是:
0 1
1 345
2 657
3 68
4 4
5 980
6 9
7 0
8 7
这个函数即可循环索引,又可循环元素,是不是很神奇呐!
列表解析
说实话这“列表解析”四个字,我刚看的时候是真不理解啊!但看完示例后,感觉这个解析好有趣。下面是具体例子,看一眼就明白啥意思了。
squared=[ x ** 2 for x in range(5)]
print squared
输出:[0, 1, 4, 9, 16]
sqdEvens=[x ** 2 for x in range(8) if not x % 2]
print sqdEvens
输出:[0, 4, 16, 36]
Python访问文件
- open()函数
这个open函数的一些参数和Linux命令的文件权限参数很像,基本上是一样的。open()的使用格式是handle=open(fileName,accessMode),第一个参数就是文件名啦,第二个参数是访问权限,主要有以下几种权限参数:
r:读取
w:写入
a:添加
+:读写
b:二进制访问
默认是:r
open()函数返回的是一个文件对象,通过这个对象,我们可以进行一些操作,比如close(),readlines(),下面是具体用法。
filename = raw_input('Enter file name: ')
fobj = open(filename, 'r')
for eachLine in fobj.readlines():
print eachLine,
fobj.close()
下面是运行结果:
Enter file name: C:/Users/P/PycharmProjects/untitled/First.py
filename = raw_input('Enter file name: ')
fobj = open(filename, 'r')
for eachLine in fobj.readlines():
print eachLine,
fobj.close()
错误和异常
C#中的异常是try-catch,Python中处理异常的是try-except。具体用法和try-catch差不多,只是没有大括号而已。
try:
filename = raw_input('Enter file name: ')
fobj = open(filename, 'r')
for eachLine in fobj:
print eachLine, fobj.close()
except IOError, e:
print 'file open error:', e
输出结果如下:
Enter file name: sdfsdf
file open error: [Errno 2] δ���ҵ��ļ���C:\Users\P\PycharmProjects\untitled\sdfsdf����: sdfsdf
这个有乱码现象是因为直接复制粘贴,可能是字符编码不一致导致的问题。
Python定义函数
Python通过关键字def来定义函数,其具体用法如下:
def addMySelf(x):
return (x+x)
print addMySelf(2)
输出结果就是:4
还有一点要注意的就是,Python中的函数,如果没有return语句的话,会自动返回None对象。不过让人很惊讶的是,任何对象都可以相加,看个例子就明白了。
def addMySelf(x):
return (x+x)
print addMySelf(2)
print addMySelf("123")
print addMySelf(["34","sdf"])
输出结果从上到下依次是:
4
123123
['34', 'sdf', '34', 'sdf']
Python函数参数的默认值,这个和MsSqlserver的函数很像了,如果你传值了,就用你传的值,如果不传,那就用事先定好的默认值。还是举个例子就明白了。
def addMySelf(x=3):
return (x+x)
print addMySelf(2)
print addMySelf()
输出结果分别是:4,6
接下来要说到类了,因为类里有我不懂得地方,而且类是面向对象的核心,所以要慎重,明天再学习类。