美文网首页
2 列表:一个打了激素的数组

2 列表:一个打了激素的数组

作者: 阿健在长安 | 来源:发表于2017-04-20 11:57 被阅读19次

列表中可以放整型、浮点型、字符串和对象,也可以是这几种类型的混合体

1. 创建列表

member = [123 , 'abc' , 1.45]
empty = []

2. 向列表添加元素:append()、extend()和insert()

append():每次只能加一个元素,参数是元素

member.append('abc')
len(member)     #输出长度为4

extend():可以添加多个元素,参数是列表

member.extend([34 , '哈哈'])

insert():在指定位置添加元素,参数是位置和元素

member.insert(0,'456')

#注意#位置是从0开始的!

3. 从列表获取元素

member[i]     #获取第i的位置的元素,注意索引从0开始

4. 从列表删除元素:remove()、del、pop()

remove():参数为元素名

member.remove(123)

del为语句,后跟列表索引

del member[0]     #删除了第1个元素
del member        #删除整个列表

pop():有返回值,参数为索引,无参时默认列表末尾元素

member.pop()     #删除了末尾元素
name = member.pop()     #把末尾元素赋值给name

member.pop(0)     #删除了第1个元素
name = member.pop(0)     #把第1个元素赋值给name

实例:在迭代器中删除列表元素是非常危险的,因为迭代器是直接引用列表的数据进行引用。这里把列表拷贝给迭代器,然后对原列表进行删除操作就没事了。

t_location = t.move()
        for each_fish in fish[:]:
            if each_fish.move() == t_location:
                t.eat()
                fish.remove(each_fish)

5. 列表分片

member = [1.45, '123', 34 , 4.5]
member[1:3]     #返回['123', 34],但member列表不变,只是取出了一个子集
member[:3]     #返回[1.45, '123', 34] ,即从头开始到第3-1个元素
member[1:]     #返回['123', 34, 4.5] ,即从第2个元素开始到末尾元素
member[:]     #原列表的一个拷贝
member[1:10:2]#取1到10,步长为2
member[::2]#全取,步长为2
member[::-2]#倒着全取,步长为2

6. 列表常用的操作符

1. 比较操作符

list1 = [3]
list2 = [4]
list1 < list2
#输出:True

2. 逻辑操作符

Paste_Image.png
(list1 < list2) and (list2 >= list1)
#输出:True

3. 连接操作符

list1 + list2
#输出:[3, 4]

4. 重复操作符

list1 * 3    #输出:[3, 3, 3]

5. 成员关系操作符

3 in list1    #输出:True

list2 = [123 , [12 , 45] , 'abc']
[12,45] in list2    #True
12 in list2[1]        #True
12 in list2       #False
list2[1][1]       #45

7. 列表的成员函数

如下指令可列出list的所有成员函数

dir(list)

1. reverse()函数:翻转列表中元素

list4 = [1, 2, 3]
list4.reverse()    #list4=[3, 2, 1]

2. sort()函数:排序函数(默认升序)

list5 = [4, 2, 5]
list5.sort()    #升序
list5.sort(reverse = True)    #降序

#注意#list = list[:]和list = list的区别

list6 = list5[:]    #列表拷贝
list7 = list5       #列表指向
list5.sort()    #list6不变,list7跟随list5变

比较上面和下面的不同。

>>> old = [1,2]
>>> new = old
>>> old = [3]
>>> print(new)
[1, 2]

3. count()函数

list1 *= 5
list1.count(3)    #数元素3的个数,输出5

4. index()函数

list2 = [123 , [12 , 45] , 'abc']
list2.index('abc')    #输出:2,该元素在第2个位置

list3 = [123, 456, 123, 456, 123, 456]
list3.index(123, 1, 3)    #从第1到3个位置中,123的索引值,输出:2

5. copy()函数

返回列表的一个拷贝。
分析下列代码,为什么不直接把str1赋给str2?

def f1(str1):
    str1 = list(str1)
    str2 = str1.copy()
    str1.reverse()
    if str1 == str2:
        print('Yes')
    else:
        print('No')

6. clear()函数

列表清空,变成一个空列表。

8. 列表解析式

表达形式:

[有关 A 的表达式 for A in B]

例如:

>>> [i**2 for i in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> list1 = [(x,y) for x in range(10) for y in range(10) if x%2 == 0 if y%2!=0]

相关文章

网友评论

      本文标题:2 列表:一个打了激素的数组

      本文链接:https://www.haomeiwen.com/subject/fmtlzttx.html