列表
***特点:
使用 [] 生成,生成元素之间用','隔开
可以包含多种类型的对象;字符串只能是字符
内容是可变的;字符串是不可变的
1.索引:[]运算符
In [1]: lst=[5.4,'hello',2]
In [2]: lst[0]
Out[2]: 5.4
2.切片:[:]
In [3]: lst[1:2]
Out[3]: ['hello']
In [4]: lst[1:3]
Out[4]: ['hello', 2]
3.拼接:+
In [5]: newlst=lst+[1.2,3.5]
In [6]: newlst
Out[6]: [5.4, 'hello', 2, 1.2, 3.5]
4.重复:*
In [13]: lst
Out[13]: [5.4, 'hello', 2]
In [14]: lst*3
Out[14]: [5.4, 'hello', 2, 5.4, 'hello', 2, 5.4, 'hello', 2]
In [15]:
5.成员:in 运算符
In [7]: 2 in lst
Out[7]: True
In [8]: 3.5 in lst
Out[8]: False
6.长度:len() 函数
In [9]: len(lst)
Out[9]: 3
In [10]: len(newlst)
Out[10]: 5
7.循环: for
In [12]: for i in lst:
....: print i
....:
5.4
hello
2
In [13]:
8.列表的方法:
In [15]: lst[0]=5 #重新赋值
In [16]: lst
Out[16]: [5, 'hello', 2]
In [17]: lst[0:2]=[3,6] #通过切片对子列表进行赋值
In [18]: lst
Out[18]: [3, 6, 2]
In [19]: lst
Out[19]: [3, 6, 2]
In [20]: lst.append("abc") #append(内容)末尾追加一个新的元素
In [21]: lst
Out[21]: [3, 6, 2, 'abc']
In [22]: lst.extend(['nihao','beautiful']) #extend([])追加一个新的列表
In [23]: lst
Out[23]: [3, 6, 2, 'abc', 'nihao', 'beautiful']
In [24]: lst.insert(3,'100') #insert(位置,内容)在任意位置插入
In [25]: lst
Out[25]: [3, 6, 2, '100', 'abc', 'nihao', 'beautiful']
In [27]: lst.pop() #默认删除最后一个,并且将其返回
Out[27]: 'beautiful'
In [28]: lst.pop(1) #pop(下标)指定删除
Out[28]: 6
In [29]: lst.remove('100') #remove(内容)删除
In [30]: lst
Out[30]: [3, 2, 'abc', 'nihao']
In [31]: lst.sort() #sort(排序
In [32]: lst
Out[32]: [2, 3, 'abc', 'nihao']
In [33]: lst.reverse() #reverse()逆序
In [34]: lst
Out[34]: ['nihao', 'abc', 3, 2]
In [35]: lst.
lst.append lst.extend lst.insert lst.remove lst.sort
lst.count lst.index lst.pop lst.reverse
In [35]:
示例:
求若干元素的平均数:
!!代码块
#!/bin/env python
#coding:utf-8
nums=[]
for i in range(5):
nums.append(float(raw_input()))
avg = sum(nums)/len(nums)
#sum()求和
#max()求最大的数
#min()求最小的数
print avg
>>>>>>>>>>>>>>>>
!!运行结果
[root@foundation66 python]# python numbers.py
1
2
3
4
5
3.0
[root@foundation66 python]#
9.列表解析
(1)列表推倒实现求平均分
In [1]: student=[['zhang',84],['wang',98],['li',76]]
In [7]: sum([x[1] for x in student])/len(student)
Out[7]: 86
(2)使用列表解析对所输入的数字i的因数求和
若输入6时,输出结果应为:(1+2+3+6=1)2
In [5]: sum([i for i in range(1,7) if 6%i==0])
Out[5]: 12
*返回x^2的值
#!/bin/env python
#coding:utf-8
print sum([i for i in range(1,7) if 6%i==0])
'''
列表解析:
表示方法:[表达式 for 变量 in 列表 if 条件]
例如:如生成值为{x^2 : x属于{1..9}}
lst=[]
for x in range(1,9):
lst.append(x**2)
print lst
用列表解析优化后:
lst = [x**2 for x in range(1,9)]
#对于1-8的数字求他的平方
'''
*求平均分并且排序
#!/bin/env python
#coding:utf-8
student=[['zhang',84],['wang',98],['li',76]]
#s=0
#for chengji in student:
# s += chengji[1]
#
#print float(s)/len(student)
print float(sum([x[1] for x in student]))/len(student)
#按照成绩从达到小排序
#def f(a):
# return a[1]
#student.sort(reverse=True)
student.sort(key=lambda x:x[1],reverse=True)
#注:匿名函数不能直接调用,调用时需要给其赋值
#lambda 参数:返回值
print student
#如果reverse=True则按照倒叙(从达到小)排列
元组
——>即不可变的列表,一旦生成,内容无法改变
1.除了可改变列表内容的方法之外,其他的方法均可适用于元组
2.因此,索引、切片、len()、print等均可用
3.但是,append、extend、del等不可用
4.为什么需要元组—保证列表内容不被修改
*定义方法
In [8]: my_tuple=1,'a',3.14,True
In [9]: my_tuple
Out[9]: (1, 'a', 3.14, True)
In [10]: my_tuple=(1,'a',3.14,True)
In [11]: my_tuple
Out[11]: (1, 'a', 3.14, True)
In [12]: type(my_tuple) #type()查看类型
Out[12]: tuple
*用’@’进行分割
In [14]: name,domain = ‘car@edu.cn’.split(‘@’)
In [15]: name
Out[15]: ‘car’
In [16]: domain
Out[16]: ‘edu.cn’