python列表

列表list

需要注意的是:建议不要将变量声明成str,list,tuple,dict。因为这四个是关键字,每个类型的标识,为避免错误,建议不要作为变量名

列表的声明方式

>>> names=['希望','hreo',666,888,'abc']
>>> print(names)
['希望', 'hreo', 666, 888, 'abc']
>>> 

列表中可以添加任意类型的数据。和str类型一样,list也支持切片,因为其本身就有索引

>>> names[0]
'希望'
>>> names[2:]
[666, 888, 'abc']
>>> names[:]
['希望', 'hreo', 666, 888, 'abc']
>>> names + ['888',"流浪街头"]  #这里的添加不会将结果反映到源变量中
['希望', 'hreo', 666, 888, 'abc', '888', '流浪街头']
>>> 

相对于str类型而言,list类型是可变的,可以为某个索引对应的值做更改

>>> names[0]=['name','name','length']
>>> names
[['name', 'name', 'length'], 'h_change', '6_change', '8_change', 888, 'abc']
>>> 

列表中含有列表,可以这样来获得

>>> names
[['name', 'name', 'length'], 'h_change', '6_change', '8_change', 888, 'abc']
>>> names[0][1]  #将获得索引为0的列表里索引为1的元素
'name'
>>>   

使用len()可以输出list和元素个数

>>> len(names)
6

list的常用方法

添加元素:
	append(参数)	向末尾追加
	extend(参数)	参数需是列表,合并列表,将列表追加到尾部
	insert(位置,要添加的参数)	插入元素
删除元素
	remove(元素名)	删除列表没有的元素会报错
	del关键字	del 列表名将整个列表删除 del name[0]将删除列表name第一个元素
	pop(index)通过索引下标删除某个元素并返回该元素  

以上方法对list类型数据操作都会直接影响到元数据类型的值

操作列表:
        count(元素)函数                        返回list列表中此函数的个数,存在则返回个数,不存在返回0
        index(元素)函数                        返回list列表中此函数的索引下标,存在则返回索引位置,不存在则报错
        index(元素,indexstart,indexend)        查找list列表中开始位置到结束位置中的这个元素的下标
        len(list)                            列表元素个数
        max(list)                            列表元素最大值
        min(list)                            列表元素最小值
        sort()函数                            将列表中所有元素按顺序排列,从小到大,列表中不能字符串数字混用,int类型永远小于str类型
        sort(reverse=True)                    将列表中所有元素按顺序排列,从大到小,与下面的作用一样
        reverse()函数                        将列表中所有元素反着排列,位置在前的变成位置在后的
        clear()                                清空列表
        copy()                                复制列表
        list(seq)                            将元组转换为列表

注:min(list)方法以下的几个方法都会对list类型结果产生影响。

>>> names=['name','age','gender',123,'abc']
>>> lnames=names
>>> names.pop
>>> names.pop(0)
'name'
>>> names
['age', 'gender', 123, 'abc']
>>> lnames
['age', 'gender', 123, 'abc']
>>> 
>>> names=['name','age','gender',123,'abc']
>>> lnames.clear()
>>> lnames
[]
>>> lnames=names[:]
>>> lnames
['name', 'age', 'gender', 123, 'abc']
>>> names.pop(0)
'name'
>>> names
['age', 'gender', 123, 'abc']
>>> lnames
['name', 'age', 'gender', 123, 'abc']
>>> 
>>> lnames.clear()
>>> lnames
[]
>>> lnames=names.copy()
>>> lnames
['age', 'gender', 123, 'abc']
>>> names.append('add')
>>> names
['age', 'gender', 123, 'abc', 'add']
>>> lnames
['age', 'gender', 123, 'abc']
>>> 

查看以上三段代码,第一个是用=符号为lnames赋值,然后更改names值,与lnames做对比

第二个是用切片的[:]方式,第三种是list类型的copy()方法。

根据以上结果来看,使用=符号,新列表会随着源列表的改变而改变,而[:]和copy方法,则不会受影响

结论:

当使用“=”符号将一个列表赋值给另一个列表时,,那么如果这个列表改变,另一个也会随着改变
而使用“=”符号的同时通过[:]截取的方式给另一个列表赋值,则不会随着源列表的改变而改变
copy()将源列表拷贝一份,并不会指向源列表的值,不会随着源列表的改变而改变。是一个新的列表.。
由此可见,后两种是一样的


 

小代码

实现菲波那切数列

>>> a,b = 0,1
>>> while b<1000:
    print(b,end=',')
    a,b = b,a+b

    
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,

分别将0和1赋值给a和b

循环b小于1000,每次循环,将b的值赋值给a,将a+b的值赋值给b。

而整个代码,关键点的就是b=a+b,这句

print(b,end=',')这句话,从结果就可以看出,在数据输出之后,在后面输出的字符。

 

更多的数据资料请查看python3.x的官方文档

 

posted @ 2017-08-31 04:39  他的梦  阅读(223)  评论(0编辑  收藏  举报