《Python参考手册(第4版•修订版)》——1.6 列表

    xiaoxiao2024-01-08  175

    本节书摘来自异步社区《Python参考手册(第4版•修订版)》一书中的第1章,第1.6节,作者David M. Beazley,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    1.6 列表

    列表是任意对象组成的序列。把值放入方括号中就可以创建列表,如下所示:

    names = [ "Dave", "Mark", "Ann", "Phil" ]

    列表使用从0开始的整数索引,使用索引运算符可以访问并修改列表中的项:

    a = names[2] # 返回列表的第3项"Ann" names[0] = "Jeff" # 将第1项改为"Jeff"

    要将新项追加到列表末尾,可使用append()方法:

    names.append("Paula")

    要将一项插入到列表中,可使用insert()方法:

    names.insert(2, "Thomas")

    使用切片运算符可以提取一个子列表或对子列表重新赋值:

    b = names[0:2] # 返回[ "Jeff", "Mark" ] c = names[2:] # 返回[ "Thomas", "Ann", "Phil", "Paula" ] names[1] = 'Jeff' # 将names中的第2项替换为'Jeff' names[0:2] = ['Dave','Mark','Jeff'] # 将列表的头两项替换为右边的列表

    使用加号(+)可以连接列表:

    a = [1,2,3] + [4,5] # 结果是[1,2,3,4,5]

    创建一个空列表有两种方式:

    names = [] # 一个空列表 names = list() # 一个空列表

    列表可以包含任意种类的Python对象,包括其他列表在内,如下例所示:

    a = [1,"Dave",3.14, ["Mark", 7, 9, [100,101]], 10]

    嵌套列表中包含的项需要使用多次索引操作才能访问到,例如:

    a[1] # 返回 "Dave" a[3][2] # 返回 9 a[3][3][1] # 返回 101

    程序清单1-2中的程序展示了列表的一些高级特性,该程序会读取在命令行上指定的一个文件中的数值列表,然后输出其中的最大值和最小值。

    程序清单1-2 列表的高级特性

    import sys # 加载sys模块 if len(sys.argv) != 2: # 检查命令行参数的数量: print "Please supply a filename" raise SystemExit(1) f = open(sys.argv[1]) # 命令行上的文件名 lines = f.readlines() # 将所有行读取到一个列表中 f.close() # 将所有输入值从字符串转换为浮点数 fvalues = [float(line) for line in lines] # 打印最小值和最大值 print "The minimum value is ", min(fvalues) print "The maximum value is ", max(fvalues)

    该程序的第一行使用import语句从Python库加载sys模块。加载该模块的目的是获得命令行参数。

    open()函数使用了一个文件名,该文件名是以命令行选项的形式提供的并保存在列表sys.argv中。readline()方法将所有输入行读取到一个字符串列表中。

    表达式[float(line) for line in line]通过对列表lines中的所有字符串进行循环,并对每个元素应用函数float(),从而构造一个新列表。这种功能特别强大的列表构造方法叫做列表推导(list comprehension)。因为你还可以使用for循环来读取文件中的行,所以可以将上面程序中转换值的代码简化为一条语句:

    fvalues = [float(line) for line in open(sys.argv[1])]

    将输入行转换成一个浮点数列表后,再使用内置函数min()和max()计算出最大值和最小值即可。

    最新回复(0)