Python学习No.1

  • 序列的通用方法
  • 数据结构
    • 列表list
    • 元祖stuple
    • 字符串str
    • 字典dict

序列

   Python包含6种内置序列:列表、元祖、字符串、Unicode字符串、buffer对象、xrange对象

   它们所包含一些通用的特性,如:

    1.索引:从0开始,-1表示最后一个元素

    2.分片:例tag=['Jock','Tom','Payt']   tag[1:2] 结果['Tom'],可以用负数,表示从后面开始,

       对于b=tage,这表示是指向同一个位置,而不是复制,如果要复制的话,用b=tage[:]

       分片可以规定,每几次取一次值,格式为 [1:6:3]  表示每三次取一次值

    3.序列相加:

a=[1,2,3,4,5]
b=[3,4,5,6,7]
c=a+b
print(c)
print(a)
print(b)


结果:
[1, 2, 3, 4, 5, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5]
[3, 4, 5, 6, 7]
从结果可以得出:  原始的数据并没有消失,而是产生新的列表
  4.序列批量生成
a=['asd']
print(a*5)

结果:
['asd', 'asd', 'asd', 'asd', 'asd']
   5.序列计算长度与找出最大元素max和最小元素min
a=['1','2','5','2623632']
print(len(a))
print(max(a))
print(min(a))

结果:
4
5
1
对于字符串的判别,要自己写规则 max('ah', 'bf', key=lambda x: x[1])
 

数据结构

一、列表list

列表属于序列,因此对于上述说的方法它依然适用,当然它也有一些自己的方法,如

1.改变列表

a=[1,2,3,4,5]
#赋值
a[1]=5
print(a)
#删除
del a[1]
print(a)
a=[1,2,3,4,5]
#分片赋值
a[1:]=list('python')
print(a)
#插入
a=[1,2,3,4,5]
a[1:1]=[1,2,3]
print(a)

2.append()在列表末尾追加新的对象

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

结果:[1, 2, 3, 4, 5, [4, 5, 6, 7]]

 

3.extend()在列表的尾部追加另一个列表的多个值

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

结果:[1, 2, 3, 4, 5, 4, 5, 6, 7]

 

4.index()找出某个值第一次匹配性的索引位置

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

结果:3

5.insert()将对象插入到列表中

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

#要插入的对象.insert(插入的位置,插入的值)
#没有返回值,对元对象进行的改变
6.pop() 移除列表中的一个元素(默认是最后一个)
a=[1,2,3,4,5]
b=[4,5,6,7]
print(a.pop())
print(a)
b.pop(1)
print(b)
#pop(要移除的位置)  返回移除元素的位置
pop()方式是唯一一个既能修改列表又返回元素值(除了None)的列表方法,返回的是移除的值

7.remove()移除列表中某个值的第一个匹配项

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

8.reverse()将列表中的元素反向存放,sort()在原位置对列表进行排序,返回值为None,sorted,返回一组新的列表

a=[2315,6,8,4,5,878,1,2,8]
a.reverse()
print(a)
a.sort()
#sort()默认是从小到大排列的,也可以自己设置排序规则
print(a)
b=[2315,6,8,4,5,878,1,2,8]
c=sorted(b)
#b原来的值并不会改变
print(b)
#c排序后的list
print(c)

9.高级排序,sort()提供两个可选参数key和reverse,key必须提供一个在排序过程中使用的函数,为每个元素创建一个键,根据键来排序,reverse是一个简单的布尔值,指明列表是否进行反向排序

 

a=['a','asf','asfasf','d','as']
a.sort( key= len)#len不能对int类型的数值进行排序
print(a)
b=['a','asf','asfasf','d','as']
b.sort(key=len, reverse=True)
print(b)

 

#Python3 取消了cmp函数,所以自定义函数的排序有所改变
from aiohttp.hdrs import AGE
a=[4,12,12,4,2,6,7]
#如果对象是数字、字符串可以使用
a.sort(key=lambda e:e)
print(a)
b=['asf','csasf','bsdasd','as','z']
b.sort(key=lambda e:e)
print(b)


class Student:
    def __init__(self,name,grade,age):
        self.name=name
        self.grade=grade
        self.age=age
    def __repr__(self):
        return repr((self.name,self.grade,self.age))
student_object=Student
student_object=[
    Student('john','A',15),
    Student('jane','B',12),
    Student('dave','B',10),
]
print(sorted(student_object,key=lambda student:student.age))

#可以引入itemgetter,attrgetter
from operator import itemgetter,attrgetter

#根据属性值
print(sorted(student_object,key=attrgetter('age')))
posted @ 2015-12-27 15:55  日拱二卒  阅读(167)  评论(0编辑  收藏  举报