02.24 自学Python-04 基本数据类型(三、列表List)


自学Python-04 基本数据类型(三、列表List)

定义

列表(list)是Python以及其他语言中最常用到的数据结构之一。Python使用使用中括号 [ ] 来解析列表。列表是可变的(mutable)——可以改变列表的内容。

列表的数据项不需要具有相同的类型:

list1 = ['Google', 'Runoob', 1997, 2000];#多类型

list2 = [1, 2, 3, 4, 5 ];

list3 = ["a", "b", "c", "d"];

基本操作

1.创建列表

list1 = [] #空列表

list2 = ['Google', 'Runoob', 1997, 2000];#多类型

2.更新列表

使用索引标记来为某个特定的、位置明确的元素赋值。意思就是不能为一个位置不存在的元素进行赋值。

list1 = [1,2,3,"python"]

list1[3] = "java"

#输出 [1, 2, 3, 'java']

print(list1)

分片赋值:

list1 = list("hello wolrd")

#输出 ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'l', 'r', 'd']

print(list1)

list1[6:] = list("python")

#输出 ['h', 'e', 'l', 'l', 'o', ' ', 'p', 'y', 't', 'h', 'o', 'n']

print(list1)

#分片赋值语句进行插入

list1[6:6] = list("my")

#输出 ['h', 'e', 'l', 'l', 'o', ' ', 'm', 'y', 'p', 'y', 't', 'h', 'o', 'n']

print(list1)

#分片赋值语句进行删除

list1[6:8] = [] #删除了'my'

#输出 ['h', 'e', 'l', 'l', 'o', ' ', 'p', 'y', 't', 'h', 'o', 'n']

print(list1)

3.查看列表-列表中取值

list1 = [1,2,3]

#输出2

print(list1[1])

#输出3

print(list1[-1])#-1表示取最后一个

#输出3 这种也是取最后一个元素

print(list1[len(list1) -1])#最后一个元素索引就是 列表长度-1

4.删除列表元素

list1 = [1,2,3]

del list1[2]#del关键字

#输出[1,2]

print(list1)

函数

1.len(list) 列表长度

list1 = [1,2,3]

#输出3

print(len(list1))

2.max(list) 返回列表元素最大值

list1 = [1,2,3]

#输出3

print(max(list1))

3.min(list)返回列表元素最小值

list1 = [1,2,3]

#输出1

print(min(list1))

4.list(sep) 其他类型转为list

参数必须是可迭代序列对象

#1.无参调用,将创建一个空列表

list1 = list()

#输出[]

print(list1)

#2.字符串转列表

strList = list('hello')

#输出 ['h', 'e', 'l', 'l', 'o']

print(strList)

#3.元组转列表

t = ('hello','world')

tupleList= list(t)

#输出 ['hello', 'world']

print(tupleList)

#4.字典转列表

d = {'name':'wang',"age":18}

dictList = list(d) #key转为列表

#输出 ['name', 'age']

print(dictList)

dictList = list(d.values()) #value转为列表

#输出 ['wang', 18]

print(dictList)

#5.集合转列表

s = {'1','2','hello'}

sList = list(s)

#输出 ['hello', '1', '2'] #注意:集合是无序的。为了让更多朋友理解这里的变化,我将另起一篇文章论证

print(sList)

方法

1.append(x)

在列表的末尾添加一个元素。相当于 a[len(a):] = [x] 。无返回值

a_list = [1,2,3]

a_list.append("python")

#输出 [1, 2, 3, 'python']

print(a_list)

2.count(x)

返回元素 x 在列表中出现的次数。有返回值

a_list = [1,2,3,[1,2],[1,2]] #列表中可含列表

count = a_list.count([1,2])

#输出 2

print(count)

3.extend(iterable)

使用可迭代对象中的所有元素来扩展列表。相当于 a[len(a):] = iterable 。无返回值。

a_list = [1,2,3,[1,2],[1,2]] #列表中可含列表

b_list = [4,5,6]

a_list.extend(b_list)

#输出 [1, 2, 3, [1, 2], [1, 2], 4, 5, 6]

print(a_list)

#extend 方法修改了被扩展的列表,而原始的连接操作(+)则不然,它会返回一个全新的列表。

a_list = [1,2,3]

b_list = [4,5,6]

#输出 [1, 2, 3, 4, 5, 6]

print(a_list + b_list)

#输出[1, 2, 3]

print(a_list)

4.index(x[, start[, end ]])

返回列表中第一个值为 x 的元素的从零开始的索引。如果没有这样的元素将会抛出 ValueError 异常。可选参数 start(查找的起始位置) 和 end(查找的结束位置) 是切片符号,用于将搜索限制为列表的特定子序列。返回的索引是相对于整个序列的开始计算的,而不是 start 参数。有返回值

a_list = [123,'java','python','js','go']

#输出2

print('python的位置:',a_list.index('python'))

#从第3个开始找

a_list = [123,'java','python','js','go',123,'python']

#输出6

print('python的位置:',a_list.index('python',3))

5.insert(i, x)

在给定的位置插入一个元素。第一个参数是要插入的元素的索引,所以 a.insert(0, x) 插入列表头部a.insert(len(a), x) 等同于 a.append(x) 。无返回值

a_list = ['java','python']

a_list.insert(1,'js')

#输出 ['java', 'js', 'python']

print(a_list)

#插入头部 index = 0 就行

#插

6.pop([i])

删除列表中给定位置的元素并返回它。如果没有给定位置,a.pop() 将会删除并返回列表中的最后一个元素。(方法签名中 i 两边的方括号表示这个参数是可选的,而不是要你输入方括号。你会在 Python参考库中经常看到这种表示方法)。默认为 i=-1,删除最后一个列表值。有返回值

a_list = [1,2,3]

#输出 删除的元素是: 3

print('删除的元素是:',a_list.pop())

#输出 [1,2]

print(a_list)

7.remove(x)

移除列表中第一个值为 x 的元素。如果没有这样的元素,则抛出 ValueError 异常。无返回值

a_list = ['python','java','php','python']

a_list.remove('python') #移除列表中第一个python,后面那个python不会删除

#输出 ['java', 'php', 'python']

print(a_list)

a_list.remove('php')

#输出 ['java', 'python']

print(a_list)

#抛出异常 ValueError: list.remove(x): x not in list

a_list.remove('rust')

8.reverse()

翻转列表中的元素。无返回值

a_list = ['python','java','php','python']

a_list.reverse()

#输出 ['python', 'php', 'java', 'python']

print(a_list)

9.sort(key=None,reverse=False)

对列表中的元素进行排序(参数可用于自定义排序,解释请参见sorted())。无返回值

sorted(iterable, *, key=None, reverse=False)

根据 iterable 中的项返回一个新的已排序列表。

具有两个可选参数,它们都必须指定为关键字参数。

key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例key=str.lower)。 默认值为 None (直接比较元素)。

reverse 为一个布尔值。 如果设为 True,则每个列表元素将按反向顺序比较进行排序。

有返回值

那么list.sort 与 sorted 有什么区别呢?

sorted函数是python的内置函数,与list.sort()基本是差不多的,参数都一样。主要的区别在于:1.list.sort()是对已经存在的列表进行操作,进而可以改变进行操作的列表。而内建函数sorted返回的是一个新的list,而不是在原来的基础上进行的操作.通常来说sorted() 更方便 ——— 但如果你不需要原列表,它会更有效率。

2. list.sort() 方法只是为列表定义的,而 sorted() 函数可以接受任何可迭代对象。

也就说想对一个列表排序,这两种方式都是可以的

(python3字符串与整数不能放在一起排序,会报错。python2可以,我电脑上也有python2.7环境,于是我试了下)

自学Python-04 基本数据类型(三、列表List)

python2.7能执行


自学Python-04 基本数据类型(三、列表List)

python3.7报错


#常规操作

a_list = ['java','python','abc']

a_list.sort()

#输出 ['abc', 'java', 'python']

print(a_list)

#降序

a_list = ['java','python','abc']

a_list.sort(reverse = True) #关键字参数

#输出 ['python', 'java', 'abc']

print(a_list)

#key参数使用 key参数的值是一个函数

student_tuples = [('john','A',15),('jane','B',12),('dave','B',10)]

student_tuples.sort(key=lambda student:student[2])

#lambda函数,举个例子

#def f(x):

#return x+2

#用lambda表示为 f = lambda x:x+2

#输出 [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

print(student_tuples)

10.clear()

移除列表中的所有元素。等价于del a[:]。无返回值

a_list.sort(reverse = True)

11.copy()

返回列表的一个浅拷贝,等价于a[:]。有返回值

a_list = ['java','python','abc']

b_list = a_list.copy()

#输出 ['java', 'python', 'abc']

print(b_list)

关于列表的知识点到这就基本结束了,后面有时间我再把排序这块的高级用法补充一下,但就现阶段来讲掌握这些就差不多了。有什么问题,请在下方评论区指出。


分享到:


相關文章: