欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python_Day1_人人都爱列表

程序员文章站 2022-04-30 22:00:36
列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或 所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。 鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如names)是个不错的主意。 列表非常适合利用顺序和位置定位某一元素,尤 ......

列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或 所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。 鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如names)是个不错的主意。

列表非常适合利用顺序和位置定位某一元素,尤其是当元素的顺序或内容经常发生改变时。与字符串不同,列表是可变的。你可以直接对原始列表进行修改:添加新元素、删除 或覆盖已有元素。在列表中,具有相同值的元素允许出现多次。

1.1常用列表方法

#使用 dir(list) ,查看列表的内置方法:
>>> dir(list) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

1.1.1 append

#向列表末尾追加一个元素
>>> numbers = [1,2,2,3,3,3]
>>> numbers.append(4)
>>> numbers
[1, 2, 2, 3, 3, 3, 4]

1.1.2 clear

#清除一个列表中的所有元素
>>> n
[1, 2, 3, 4, 5]

>>> n.clear()

>>> n
[]

1.1.3 copy

#复制一个列表
>>> n = [1,2,3,4,5]

>>> n.copy()
[1, 2, 3, 4, 5]

>>> n.copy()
[1, 2, 3, 4, 5]

>>> num = n.copy()

>>> num
[1, 2, 3, 4, 5]

1.1.4 count

#计算某个元素在列表中出现的次数
>>> numbers
[1, 2, 2, 3, 3, 3, 4]
>>> numbers.count(1)
1
>>> numbers.count(2)
2
>>> numbers.count(3)
3
>>> numbers.count(4)
1

1.1.5 extend

#直接向列表末尾一次性追加另一个列表
>>> numbers
[1, 2, 2, 3, 3, 3, 4]
>>> a = [4,4,4]
>>> numbers.extend(a)
>>> numbers
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
>>> a
[4, 4, 4]

1.1.6 insert

#将对象插入列表中
>>> numbers
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
>>> numbers.insert(0,0)
>>> numbers
[0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4]

1.1.7 pop

#移除列表中的最后一个元素,默认是最后一个
>>> numbers
[0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
>>> numbers.pop()
4
>>> numbers
[0, 1, 2, 2, 3, 3, 3, 4, 4, 4]

1.1.8 remove

#默认移除列表中第一个匹配的元素
>>> num
[1, 2, 1, 3, 2]
>>> num.remove(1)
>>> num
[2, 1, 3, 2]
>>> num.remove(2)
>>> num
[1, 3, 2]

1.1.9 reverse

#将列表中的元素反向存放
>>> numbers
[0, 1, 2, 2, 3, 3, 3, 4, 4, 4]
>>> numbers.reverse()
>>> numbers
[4, 4, 4, 3, 3, 3, 2, 2, 1, 0]

1.1.10 sort

#########################################################
#对列表排序,这个我比较喜欢,里面挺多好玩的东西,下面做个简单的介绍#
#########################################################

#默认排序 >>> l = [1,4,3,2] >>> l.sort() >>> l [1, 2, 3, 4] #自定义排序 #咱们先看看sort的使用方法 >>> l.sort.__doc__ 'l.sort(key=none, reverse=false) -> none -- stable sort *in place*' #根据提供的key函数为元素产生一个键,列表的元素按照这个键值来排序 >>> x = ['abc','a','bc','abcd'] >>> x.sort(key=len) >>> x ['a', 'bc', 'abc', 'abcd’] #反向排序 >>> n = [3, 1, 2, 5] >>> n.sort(reverse=true) >>> n [5, 3, 2, 1]

1.2 其他的几个方法

1.2.1 in

#使用 in 判断值是否存在
#判断一个值是否存在于给定的列表中的许多方式,其中最具有 python 风格的是使用 in:
>>> num = [1, 2, 3]
>>> 1 in num
true
>>> 5 in num
false
>>>

#同一个值可能出现在列表的多个位置,但只要至少出现一次,in就会返回ture
>>> num = [1, 1, 2, 3]
>>> 1 in num
true

1.2.2 len()

#使用 len()获取长度
#len()可以返回列表长度
>>> num = [1, 2, 3]
>>> len(num)
3

#对于汉字呢?是如何计算长度呢?
>>> num = "菜鹌鹑2333"
>>> len(num)
7
#so,你get到了吗?

1.2.3  “=” 和 “copy()”有啥不一样呢?

# “=” 是赋值  copy()是复制
#这个相信大家都知道,但是到底还有啥区别呢?往下看
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> b = a
>>> b
[1, 2, 3]
>>> a[0] = '菜鹌鹑'
>>> a
['菜鹌鹑', 2, 3]
>>> b
['菜鹌鹑', 2, 3]
#和软链接有点像哦,让我们看看他们的内存地址:
>>> hex(id(a))
'0x1a93262c588'
>>>
>>> hex(id(b))
'0x1a93262c588'
#我们发现,两个变量指向同一个对象。

#咱们再看看copy()
>>> c = a.copy()
>>> a
[1, 2, 3]
>>> c
[1, 2, 3]
>>> a[0] = '菜鹌鹑'
>>> c
[1, 2, 3]
#没办法改变c列表了,再看看他们的内存地址
>>> hex(id(a))
'0x1a93262c588'
>>> hex(id(c))
'0x1a93262ce08'
#原来copy()生成了新的列表,已经指向两个不同的对象。

#除了copy(),还有其他方法生成新列表
########
#list()#
########
>>> a = [1,2,3]
>>> b = list(a)
>>> b
[1, 2, 3]
>>> hex(id(a))
'0x2e78957c588'
>>> hex(id(b))
'0x2e78957cfc8'
#########
#列表切片#
#########
>>> a = [1,2,3]
>>> c = a[:]
>>> c
[1, 2, 3]
>>> hex(id(c))
'0x2e78957c588'
>>> hex(id(a))
'0x2e78957ce08'