赞
踩
上篇介绍了python的变量和简单的数据类型,本篇学习和总结列表的使用。正如list、set等列表在Java里广泛的使用,列表在Python里也广泛使用。列表是什么?简单来说,就是一系列元素按照顺序排列起来的集合。
目录
- people = ["man", "woman", "child"]
- print(people)
- print(people[0])
- print(people[1])
- #访问最后一个元素的三种方式
- print(people[2])
- print(people[len(people)-1])
- print(people[-1])
注意,跟Java很大的一个区别,在通过下标访问列表元素时,index可以为负数。例如,list[-1]表示列表的倒数第一个元素。所以,python列表访问元素的下标范围为[-len(list) — len(list) -1]。当不在该范围时,也会抛出越界的异常。
- number = [0, 1, 2]
- print(number)
- number[0] = 3
- number[1] = 4
- number[-1] = 5
- print(number)
- array = ["b", "c", "d"]
- print(array)
- array.insert(0, "a")
- array.append("e")
- print(array)
使用Insert(index,element)可以在任意位置插入元素;如果想在列表的最后插入元素,可以使用append(element)方法。
(1)使用del删除任何一个元素,该元素不再被使用。
- language = ["python", "java", "c++"]
- print(language)
- del (language[-1])
- print(language)
- del (language[-1])
- print(language)
(2)使用pop删除任何一个元素,可以用变量接收该元素继续使用。
- language = ["python", "java", "c++"]
- print(language)
- l3 = language.pop()
- print(l3)
- print(language)
- l2 = language.pop(1)
- print(l2)
- print(language)
pop的概念类似栈弹出栈顶元素。栈是典型的先进后出数据结构,因此pop操作在不指定index时总会弹出最后一个元素。
(3)使用remove直接删除一个指定值的元素
- language = ["python", "java", "c++", "c++"]
- print(language)
- language.remove("c++")
- print(language)
remove一次只删除一个元素,如果列表里有多个相同的元素,只会删除第一个匹配到的元素。如果需要删除所有的匹配元素,则需要遍历进行删除。
sort方法默认按首字母从a-z排序,如果想从z-a,可以传入reverse=True。 sort方法是永久修改,不再保持原有的元素排列顺序。
- language = ["java", "python", "c++"]
- print(language)
- language.sort()
- print(language)
- language.sort(reverse=True)
- print(language)
如果想临时的改变列表的排序去使用它,但是还想保留列表原有的顺序,那么可以使用sorted方法。
- language = ["java", "python", "c++"]
- print(language)
- print(sorted(language))
- print(language)
- language = ["java", "python", "c++"]
- print(language)
- language.reverse()
- print(language)
Python使用for [元素] in [列表] 语法来进行遍历,注意缩进。如果想在for循环中处理逻辑,应有缩进。如果想在for循环完成后处理逻辑,则不应有缩进。即:for循环后没有缩进的语句只执行一次。
- languages = ["python", "java", "c++"]
- for language in languages:
- print(language)
- print("for in end")
需要注意的是:不同于Java,缩进的不合理使用,在python里面可能导致很多问题。例如上面,假如最后一行代码也缩进了,会导致啥问题?毫无疑问,会在每一次打印完元素后紧接着打印一条"for in end"。
那如果for in的后一行语句没有缩进呢?编译器会提示报错,编译不过。
(1)生成数字列表
使用range()函数可以生成一系列的数字,使用list()函数可以把这一系列的数字快速转化为列表。 注:range()函数可以指定步长,默认为1
- # 1-10的列表
- numbers = list(range(1, 11))
- print(numbers)
- # 1-10奇数的列表
- numbers = list(range(1, 11, 2))
- print(numbers)
- # 1-10数字的平方
- numbers = []
- for number in range(1, 11):
- numbers.append(number ** 2)
- print(numbers)
(2)数字列表简单统计
Python提供了几个专门用于处理数字列表的函数,可以轻松地获取最大值、最小值和总和,进而也能获取平均值。
- numbers = list(range(1, 11))
- print(min(numbers))
- print(max(numbers))
- print(sum(numbers))
- print(sum(numbers)/len(numbers))
(3)列表解析
前面介绍的生成数字列表方式包含两三行代码,python支持一行代码就能生成数字列表。
- numbers = [number**2 for number in range(1, 11)]
- print(numbers)
(1)切片
指定要使用的第一个元素和最后一个元素的索引创建切片。特别需要注意的是:
- languages = ["python", "java", "c++", "php"]
- print(languages)
- print(languages[1:3])
- print(languages[:3])
- print(languages[2:])
- print(languages[:-3])
- print(languages[-2:])
(2)遍历切片
切片返回的是一个新的列表,新的切片列表不会影响原来的列表,我们可以遍历这个切片列表:
- languages = ["python", "java", "c++", "php"]
- for language in languages[:3]:
- print(language)
(3)复制列表
如果切片既不指定起始索引,也不指定终止索引,那么会得到一个什么样的切片?我们心里应该都有答案了,那就是跟原来的列表内容一样的列表,达到了复制列表的目的。注:通过切片复制得到的列表是跟原来列表完全无关的一个新列表。
- languages = ["python", "java", "c++", "php"]
- languages_new = languages[:]
- print(languages)
- print(languages_new)
上面提到了,使用切片复制而来的列表是一个新列表,跟原来的列表没有关联。那么思考一下如下的代码,会输出什么?
- languages = ["python", "java", "c++", "php"]
- languages_1 = languages
- languages.append("oc")
- languages_1.append("js")
- print(languages)
- print(languages_1)
答案是:
是不是看着有点不符合预期?为什么不是languages多一个"oc",languages_1多一个"js"?我们直接把languages这个变量赋值给languages_1,这两个变量其实指向的都是同一个列表。所以,对languages的改动其实就是对languages_1的改动,反过来也一样。
上面提到的列表,元素的内容是可变的。如果我们想定义一个元素不可变的列表,那么如何实现。python提供了元组这种列表,定义完不可重新赋值,与列表的区别为使用()而不是[]来定义。
- people = ("male", "female")
- print(people)
- people[1] = "both" # 不能这样
- print(people)
如上所以,从性别来说,人只有男性和女性,没有第三种性别。因此,对于这种不可变的列表,我们可以使用元组。如果要修改,则会编译报错,这是符合预期的:
元组的遍历跟列表一样:
- people = ("male", "female")
- print(people)
- for one in people:
- print(one)
本篇总结了python里列表的使用,包括:列表的创建,列表元素的增加、删除和修改,列表的排序和遍历,数字列表和简单的统计,列表切片以及不可变的列表-元组等。再下一篇,我们将总结条件控制语句-if语句的使用,让我们的程序可以采取多种不同的运行路线。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。