http://blog.csdn.net/ly21st http://ly21st.blog.chinaunix.net
分类: Python/Ruby
2011-09-29 09:28:16
>>>1/2
在3.0版本以前,输出结果为0
如果希望Pythoh只执行普通的除法,可以在程序前加上以下语句,或者直接在解释器里面执行它:
>>>from __future__ import division
还有一个方法,通过在命令行(如linux系统)运行Python,可以使用命令开关-Qnew。通过上述方法,得到的结果为:
>>>1/2
0.5
1.11.3字符串表示,str和repr将值转换为字符串的两种机制:
1)通过str函数,它会把值转换成合理形式的字符串
2)repr函数,它会创建一个字符串,以合法的python表达式的形式来表示值
在3.0以前的版本中,反引号``可以代替repr
1.11.4 input和raw_input的比较
input假设用户输入的是合法的Python表达式;
raw_input函数会把所有的输入当作原始数据,然后放入字符串。
1.12.1
第2章 列表和元组 2.2 通用序列操作
序列可以进行以下的操作:索引、分片、加、乘以及检查某个元素是否属于序列的成员(成员资格),计算序列长度、找出最大元素和最小元素。
如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作。
>>>fourth=raw_input(“year:’)[3]
year:2005
>>>foutth
‘5’
例子:
# Print out a date, given year, month, and day as numbers
months = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
]
# A list with one ending for each number from 1 to 31
endings = ['st', 'nd', 'rd'] + 17 * ['th'] \
+ ['st', 'nd', 'rd'] + 7 * ['th'] \
+ ['st']
year = raw_input('Year: ')
month = raw_input('Month (1-12): ')
day = raw_input('Day (1-31): ')
month_number = int(month)
day_number = int(day)
# Remember to subtract 1 from month and day to get a correct index
month_name = months[month_number-1]
ordinal = day + endings[day_number-1]
结果为:
print month_name + ' ' + ordinal + ', ' + year
Year: 3009
Month (1-12): 11
Day (1-31): 23
November 23rd, 3009
分片:
>>> number
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> number[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> number[0:10:2]
[1, 3, 5, 7, 9]
>>> number[0::4]
[1, 5, 9]
>>> number[8:3:-1]
[9, 8, 7, 6, 5]
>>> number[10:0:-2]
[10, 8, 6, 4, 2]
>>> number[9:0:-2]
[10, 8, 6, 4, 2]
>>> number[::-2]
[10, 8, 6, 4, 2]
>>> number[5::-2]
[6, 4, 2]
>>> number[:5:-2]
[10, 8]
2.3 列表根据字符串创建列表
>>> list('hello')
['h', 'e', 'l', 'l', 'o']
可以用下面的表达式将一个由字符组成的列表转换成字符串:
‘’.join(somelist)
这里,somelist是需要转换的列表。
>>> a=list('hello')
>>>
>>> a
['h', 'e', 'l', 'l', 'o']
>>> b=''.join(a)
>>> b
'hello'
列表的操作:
1)改变列表:元素赋值;
注意:不能为一个位置不存在的元素进行赋值。
2)删除元素 del names[2]
3)分片赋值:它可以在不需要替换任何原有元素的情况下插入新的元素。
>>> numbers=[1,5]
>>> numbers[1:1]=[2,3,4]
>>> numbers
[1, 2, 3, 4, 5]
以此类推,通过分片赋值来删除元素也是可以的:
>>> numbers
[1, 2, 3, 4, 5]
>>> numbers[1:4]=[]
>>> numbers
[1, 5]
列表方法:
1) append
2) count
3) extend
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
>>>
4) index:该方法用于从列表中找出某个值第一个匹配项的索引位置:
然而,当没有相应的项相匹配的时候,就会引发一个异常;
5)insert:该方法用于将对象插入列表中;
6)pop:该方法会移除列表中的一个元素(默认是最后一个),并且返回该元素的值;
注意:pop方法是唯一一个既能修改列表又返回元素值(除了None)的列表方法。
7)remove:该方法用于移除列表中某个值的第一个匹配项:
如果不存在于列表中的值,是不会被移除的,而且会引发一个异常。
8)reverse: 该方法将列表中的元素反向存放;
如果需要对一个序列进行反向迭代,可以使用reversed函数,该函数不返回一个列表,而是返回一个迭代器对象。但使用list函数把返回的对象转换成列表也是可行的:
>>> x=[1,2,3]
>>> list(reversed(x))
[3, 2, 1]
9)sort:该方法用于在原位置上进行排序。
>>> x=[4,6,2,1,7,9]
>>> x.sort()
>>> x
[1, 2, 4, 6, 7, 9]
注意:
>>> x=[4,6,2,1,7,9]
>>> y=x.sort()
>>> print y
None
注意:
>>> x=[4,3,2,1]
>>> y=x[:]
>>> y.sort()
>>> x
[4, 3, 2, 1]
>>> y
[1, 2, 3, 4]
注意:
>>> x=[4,3,2,1]
>>> y=x
>>> y.sort()
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
另一个获取已排序的列表副本的方法是,使用sorted 函数:
>>> x=[4,3,2,1]
>>> y=sorted(x)
>>> x
[4, 3, 2, 1]
>>> y
[1, 2, 3, 4]
高级排序
通过给sort方法传递函数,函数可以是自定义函数
>>> numbers=[5,2,9,7]
>>> x=numbers
>>> x
[5, 2, 9, 7]
>>> numbers.sort(cmp)
>>> numbers
[2, 5, 7, 9]
sort方法有另外两个可选的参数---key和reverse。如果要使用它们,那么就要通过名字来指定(这叫关键字参数)。参数key与参数cmp类似------必须提供一个在排序过程中使用的函数。
例如:
>>> x=['aardvark','abalone','acme','add','aerate']
>>> x.sort(key=len)
>>> x
['add', 'acme', 'aerate', 'abalone', 'aardvark']
另一个关键字参数reverse是简单的布尔值(True或者是False),指明是否要进行反向排序。
>>> x=[4,6,2,1,7,9]
>>> x.sort(reverse=True)
>>> x
[9, 7, 6, 4, 2, 1]
2.4 元组------不可变序列空元组可以用没有包含内容的两个圆括号来表示:
>>> ()
()
实现包括一个值的元组方法是------必须加个逗号,即使只有一个值:
>>> 42
42
>>> 42,
(42,)
>>> (42,)
(42,)
>>>
一个逗号能彻底改变一个表达式的值
>>> 3*(40+2)
126
>>> 3*(40+2,)
(42, 42, 42)
>>>
tuple函数:以一个序列为参数把它转换成元组:
>>> tuple([2,3,4])
(2, 3, 4)
>>> tuple('abc')
('a', 'b', 'c')
>>> tuple((1,2,3))
(1, 2, 3)
小结