Python学习之列表List()

19 篇文章 0 订阅
17 篇文章 1 订阅

此前已经学过的Python的基本对象类型:int 、 float、 str
list在Python中也是一种基本的对象类型。
定义
在Python中,通常使用list:[ ]来表示列表,在[ ]中的元素可以是int,float,str甚至也可以是boolean类型值和dict(以后会提到讲解)字典,这就比java和类C语言的数组方便多了,这类编程语言,在定义的数组中,首先对数据进行声明,声明的类型确定了数组中需要存放什么样的元素。int ,float,string,char,都是先定义,后存放。
但是在Python中,这个list:[ ]可以说是功能非常强大。
示例:

>>> a = [ ]              #定义一个空列表
>>> type(a)              #查看a的类型
<type 'list'>
>>> bool(a)              #查看列表a的bool值,如果为空返回false,否则返回true
False
>>> print a
[]
>>> 

示例非空列表

>>> a = [2,'a','string','python','java','c++']
>>> type(a)
<type 'list'>
>>> bool(a)
True
>>> print a
[2, 'a', 'string', 'python', 'java', 'c++']
>>> 

思考:在Python中,list可以存放多少元素呢?
答案:如果你的计算机硬件多高,就可以容纳多少的元素,简直是有容乃大呀!

列表中的索引和切片
关于索引和切片我们在学习字符串的时候已经了解了,但是再这里还是不得不在操作一番。
首先来看一下字符串中关于索引和切片的用法

>>> a = "I love Python, I wanna to learn python well"
>>> print a
I love Python, I wanna to learn python well
>>> a[1]
' '
>>> a[2]
'l'
>>> a[5]
'e'
>>> a[:1]
'I'
>>> a[:-1]
'I love Python, I wanna to learn python wel'
>>> a[:-5]
'I love Python, I wanna to learn python'
>>> a[1:6]
' love'
>>> a[-4:-8]           #注意这一条,在这里我们发现什么也没有输出,在Python中,
                       #start开始的值一定要比stop结束的值小。
''
>>> a[-8:-4]
'hon '
>>> 

在列表中,也有和字符串类似的操作

>>> a = [4,1,'a','java','objective-c','c++','Python','www.baidu.com']
>>> print a
[4, 1, 'a', 'java', 'objective-c', 'c++', 'Python', 'www.baidu.com']
>>> a[0]
4
>>> a[2]
'a'
>>> a[:3]
[4, 1, 'a']
>>> a[3:6]
['java', 'objective-c', 'c++']
>>> a[-5:-2]
['java', 'objective-c', 'c++']
>>> a[-2:-5]            #原因通字符串解释,这是Python中的规则,不能违背。哈哈
[]
>>> 

在[ 下标 ]中,其实,下表就是用来访问元素在list中的位置,从0开始,到len(list)-1结束。
我们可以通过index来检测。

>>> print a
[4, 1, 'a', 'java', 'objective-c', 'c++', 'Python', 'www.baidu.com']
>>> a[3]
'java'
>>> a.index("java")
3
>>> a = "I love python"
>>> a[5]
'e'
>>> a.index('e')
5
>>> 

列表中的反转
在Python中,对于列表中的元素进行反转,有两种方式。
方法一:
利用[ :: -1]

>>> a = [4,1,'a','java','objective-c','c++','Python','www.baidu.com']
>>> print a
[4, 1, 'a', 'java', 'objective-c', 'c++', 'Python', 'www.baidu.com']
>>> a[::-1]
['www.baidu.com', 'Python', 'c++', 'objective-c', 'java', 'a', 1, 4]
>>> 

当然,对于字符串也是适用的。

>>> string = 'Python'
>>> print string
Python
>>> string[::-1]
'nohtyP'
>>> 

其实上面这种方法很多时候会让人觉得迷茫,个人更习惯于使用Python中的内建模块reversed()
方法二:reversed( )函数

>>> print a
[4, 1, 'a', 'java', 'objective-c', 'c++', 'Python', 'www.baidu.com']
>>> list(reversed(a))
['www.baidu.com', 'Python', 'c++', 'objective-c', 'java', 'a', 1, 4]
>>> 

关于reversed函数:

Help on class reversed in module __builtin__:

class reversed(object)
 |  reversed(sequence) -> reverse iterator over values of the sequence
 |  
 |  Return a reverse iterator
 |  
 |  Methods defined here:
 |  
 |  __getattribute__(...)
 |      x.__getattribute__('name') <==> x.name
 |  
 |  __iter__(...)
 |      x.__iter__() <==> iter(x)
 |  
:

意思大概是它返回一个迭代的对象。iterator(迭代),感觉是不是又学了一个新单词,个人觉得,学习编程语言的时候,不管学没学会,英语单词倒是记住了很多。并且很专业。允许我笑一会儿,哈哈哈哈哈哈!

对List的操作,和字符串一样
len( )统计列表元素的个数

>>> print a
[4, 1, 'a', 'java', 'objective-c', 'c++', 'Python', 'www.baidu.com']
>>> b = ['I','Love','Python']
>>> print b
['I', 'Love', 'Python']
>>> len(a)
8
>>> len(b)
3
>>> 

” + “连接两个序列

>>> print a
[4, 1, 'a', 'java', 'objective-c', 'c++', 'Python', 'www.baidu.com']
>>> print b
['I', 'Love', 'Python']
>>> print a+b
[4, 1, 'a', 'java', 'objective-c', 'c++', 'Python', 'www.baidu.com', 'I', 'Love', 'Python']
>>> 

in 判断某个元素是否在列表中,如果存在于列表中,返回true,如果不在,返回false

>>> print a
[4, 1, 'a', 'java', 'objective-c', 'c++', 'Python', 'www.baidu.com']
>>> print b
['I', 'Love', 'Python']
>>> "java" in a
True
>>> "VC++" in a
False
>>> "Love" in b
True
>>> "Like" in b
False
>>> 

“ * ”将列表中的元素进行重复显示

>>> print b
['I', 'Love', 'Python']
>>> print b * 3
['I', 'Love', 'Python', 'I', 'Love', 'Python', 'I', 'Love', 'Python']
>>> 

max( )和min( )

>>> print a
[4, 1, 'a', 'java', 'objective-c', 'c++', 'Python', 'www.baidu.com']
>>> max(a)
'www.baidu.com'
>>> min(a)
1
>>> 

cmp( )比较函数,全部相同,返回0,一个相同,返回1,全不相同,返回-1

>>> c = [1,2]
>>> b = [1,3]
>>> print c,b
[1, 2] [1, 3]
>>> cmp(c,b)
-1
>>> la = [2]
>>> cmp(c,la)
-1
>>> lc = [1]
>>> cmp(c,lc)
1
>>> lb = [1,3]
>>> cmp(b,lb)
0
>>> 

* 在列表中追加元素*
在Python中,对列表中的元素进行追加,使用append函数

第一种方法:直接使用list.append(元素)

>>> b = ["I","LOVE"]
>>> print b
['I', 'LOVE']
>>> b.append("PYTHON")
>>> print b
['I', 'LOVE', 'PYTHON']
>>> b.append(4321)
>>> print b
['I', 'LOVE', 'PYTHON', 4321]
>>> 

第二种方法:使用list[len(list):]=[x]

>>> print b
['I', 'LOVE', 'PYTHON', 4321]
>>> b[len(b):]=["JAVA"]
>>> print b
['I', 'LOVE', 'PYTHON', 4321, 'JAVA']
>>> 

列表中的函数
Python中的函数有哪些?

dir(list)
[‘add‘, ‘class‘, ‘contains‘, ‘delattr‘, ‘delitem‘, ‘delslice‘, ‘doc‘, ‘eq‘, ‘format‘, ‘ge‘, ‘getattribute‘, ‘getitem‘, ‘getslice‘, ‘gt‘, ‘hash‘, ‘iadd‘, ‘imul‘, ‘init‘, ‘iter‘, ‘le‘, ‘len‘, ‘lt‘, ‘mul‘, ‘ne‘, ‘new‘, ‘reduce‘, ‘reduce_ex‘, ‘repr‘, ‘reversed‘, ‘rmul‘, ‘setattr‘, ‘setitem‘, ‘setslice‘, ‘sizeof‘, ‘str‘, ‘subclasshook‘, ‘append’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’]

请注意以上没有下划线的’append’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’.
其中有两三个我们已经接触过了,我们试试其他的。
extend函数

>>> a = ["I","Love"]
>>> b = ["Python"]
>>> a.extend(b)
>>> print a
['I', 'Love', 'Python']
>>> 

我们发现将两个列表合并在一起了,这和我们之前提到过的” + “连接相似

>>> print a+b
['I', 'Love', 'Python']
>>> print a
['I', 'Love']
>>> print b
['Python']
>>> 

不过二者是有区别的,+只是单纯的将两个列表拼接在一个,而extend将一个列表追加到另一个列表当中。
思考:extend会不会将字符串追加到list列表中呢?

>>> print a
['I', 'Love']
>>> b = "Python"
>>> a.extend(b)
>>> print a
['I', 'Love', 'P', 'y', 't', 'h', 'o', 'n']
>>> 

哈哈哈哈,我们发现可以的,但是把字符串拆成了单个字符追加进去了。extend其实就是继承,就如同java中面向对象的三大特性之一继承
extend也可以采用list[len(list):]=[x]的方式追加。

>>> print a
['I', 'Love', 'P', 'y', 't', 'h', 'o', 'n']
>>> print a
['I', 'Love', 'P', 'y', 't', 'h', 'o', 'n']
>>> b = ["Java"]
>>> a[len(a):]=["Java"]
>>> print a
['I', 'Love', 'P', 'y', 't', 'h', 'o', 'n', 'Java']
>>> 

思考,如果我们再List中extend一个数值类型的,会不会成功?

>>> print a
['I', 'Love', 'P', 'y', 't', 'h', 'o', 'n', 'Java']
>>> c = 5
>>> a.extend(c)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> 

哇,好神奇,竟然报错了,怎么办?
你看typeError呀,真笨,哈哈哈,发现提示说int不是一个可迭代的对象。
那么问题来了,怎么判断一个对象是不是可迭代的呢?
答案是hasattr(变量名称,’iter‘)

>>> list = "Java"
>>> hasattr(list,'__iter__')
False
>>> list = ["java","c++"]
>>> hasattr(list,'__iter__')
True
>>> 

所以现在应该知道该如何使用extend了吧!学会了这个会不会突然好开心。

>>> print list
['java', 'c++']
>>> a = [1,2,4]
>>> list.extend(a)
>>> print list
['java', 'c++', 1, 2, 4]
>>> 

count( )函数,统计列表中元素出现的个数

>>> a = [1,32,32,1,5,1,6]
>>> print a
[1, 32, 32, 1, 5, 1, 6]
>>> a.count(1)
3
>>> a.count(32)
2
>>> 

insert(位置,元素),在指定的位置插入一个元素

>>> a = ["this","is","Python"]
>>> a.insert(2,"a")
>>> print a
['this', 'is', 'a', 'Python']
>>> a.insert(3,"!")
>>> print a
['this', 'is', 'a', '!', 'Python']
>>> a.insert(10,"!")
>>> print a
['this', 'is', 'a', '!', 'Python', '!']
>>> 

list.pop([i] )和List.remove( )函数,删除列表中的某一个元素
首先来看list.pop( )函数

>>> a = ["I","Love","Python","1",4]
>>> print a
['I', 'Love', 'Python', '1', 4]
>>> a.pop(3)
'1'
>>> print a
['I', 'Love', 'Python', 4]
>>> 

我们发现是按照元素的下标进行删除列表中的元素。
再来看看list.remove( )函数

>>> a = ["I","Love","Python","1",4]
>>> print a
['I', 'Love', 'Python', '1', 4]
>>> a.remove('1')
>>> print a
['I', 'Love', 'Python', 4]
>>> a.remove(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> 

我们发现list.remove是对列表中的元素进行检索匹配,如果存在则删除,如果不存在,则报错。
以上就是今天所学习的全部内容,如果你有Java和类C语言基础,一定会很快吸收的,如果没有的话,则需要花费一定的时间。如有不足之处,请多多指教,包含。
明天更新比较列表和字符串

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要对Python列表中的元素进行降序排序,可以使用sort()方法并传递reverse=True参数。例如: ``` my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] my_list.sort(reverse=True) print(my_list) ``` 输出结果为: ``` [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1] ``` 这样就可以将列表中的元素按照从大到小的顺序进行排序。 ### 回答2: 在Python中,列表是一种非常重要的数据类型,也是我们在编写程序中经常使用的数据结构之一。列表中存储的可以是任意类型的数据,包括数字、字符串、布尔值等等。在列表中,我们可以根据需要添加、删除、修改和排序其中的元素。 降序排序是指按照从大到小的顺序对列表中的元素进行排序。Python内置的sort()函数可以实现列表按照升序排序,但是如果我们需要降序排序,就需要使用另一种方式,即reverse=True参数。下面是一个示例代码,演示了如何对一个列表进行降序排序: ```python numbers = [3, 8, 1, 6, 2] numbers.sort(reverse=True) print(numbers) ``` 在上面的代码中,我们定义了一个名为numbers的列表,其中包含五个数字。然后我们使用sort()函数对这个列表进行排序,同时传递了一个reverse=True参数,表示按照降序排序。最后我们使用print()函数输出了排序后的列表。执行这段代码后,你会得到如下所示的输出: ```python [8, 6, 3, 2, 1] ``` 可以看到,按照从大到小的顺序,列表中的数字已经被正确排序了。需要注意的是,sort()函数会修改原始列表,因此如果你需要保留原始列表的顺序,可以先将其复制到一个新的列表中,再对新列表进行排序。另外,如果你需要按照多个条件对列表进行排序,可以使用sort()函数的key参数,具体使用方式可以参考Python的官方文档。 综上所述,学习列表的应用之后,降序排序是非常重要的技能。掌握了降序排序的方法,我们就可以轻松对列表、元组、字典等数据结构进行排序,并根据需要进行添加、删除和修改操作,提高代码的可读性和运行效率。 ### 回答3: Python中的列表list)是一种非常常用的数据结构,可以容纳任何类型的数据,并且可以进行各种操作。在数据处理和算法中,对列表进行排序是一个非常常见的操作,Python提供了多种排序方法,其中之一就是降序排序。 在Python中,可以使用sort()函数对列表进行排序。sort()函数有两个可选参数key和reverse。其中key是一个函数,用于生成排序的依据,如果不指定,默认按照元素的大小进行排序。而reverse用于指定排序的是升序还是降序,默认为False,即升序排序。如果要进行降序排序,只需要将reverse设置为True即可。 以下是一个简单的例子,说明如何使用sort()函数进行降序排序: ``` nums = [1, 5, 3, 8, 2] nums.sort(reverse=True) print(nums) ``` 运行结果为: ``` [8, 5, 3, 2, 1] ``` 上述代码中,我们首先定义了一个包含5个整数的列表nums。然后使用sort()函数对其进行降序排序,并将reverse参数设置为True。最后输出排序后的列表。 除了sort()函数之外,Python还提供了其他的排序函数,例如sorted()函数可以对任何可迭代的对象进行排序,而不仅仅是列表。此外,还可以使用lambda表达式指定排序依据,例如按照列表中每个元素的第二个值进行排序: ``` items = [(1, 2), (3, 1), (5, 4), (0, 2)] items.sort(key=lambda x: x[1], reverse=True) print(items) ``` 运行结果为: ``` [(5, 4), (1, 2), (0, 2), (3, 1)] ``` 上述代码中,我们定义了一个包含4个元组的列表items,每个元组包含两个整数。然后使用sort()函数进行排序,指定排序依据为每个元组的第二个值,即使用lambda表达式生成排序依据。最后输出排序后的列表。 总之,Python中的列表及其排序方法,在数据处理和算法中非常常用。掌握列表的基本操作,以及sort()和sorted()函数的使用方法,可以帮助我们更加高效地处理数据和编写代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值