Python学习笔记--基础篇3

来源:互联网 发布:淘宝店铺管理教程 编辑:程序博客网 时间:2024/06/07 16:45

Python学习笔记——基础篇3

列表和索引

列表也是一个对象,跟其他对象一样,也可以将它赋值给一个变量。虽然列表本身是一个对象,但它可以存放其他对象的引用。通过索引,可以获得列表中的对象。

python还支持列表逆向索引,最后一个元素的索引为-1,它前面的索引为-2,以此类推。用列表来聚合相关信息容易出错。

>>>whales = [5, 4, 7, 3, 2, 3 ,2 ]

>>>whales[-1]

2

列表是异构的

列表可以含有任意类型的数据,包括整数、字符串甚至别的列表。

>>>krypton = ['Krypton', 'Kr', -157.2, -153.4]

>>>krypton[1]

'Kr'

>>>krypton[2]

-157.1999999999999

列表是可变的,列表的内容可以在创建后再修改。数字和字符串是不可变的。


与列表相关的内置函数

列表函数

方法说明len(L)返回列表L中的元素数量max(L)返回列表L中的最大值min(L)返回列表L中的最小值sum(L)返回列表L中所有值的和

“+”可用于列表,通过“+”得到的列表,是创建了一个新列表,该列表中的元素引用的是原始列表中那些元素。


处理列表项

python提供了一个for循环来帮助处理列表中每个元素:

for variable in list:

        block


嵌套循环

循环中的代码块可以包含任何东西,循环内部还可包含另一个循环。

>>>outer = ['Li', 'Na', 'K']

>>>inner = ['F', 'Cl', 'Br']

>>>for metal in outer:

               for logen in inner:

                         print metal + halogen


切片

>>>celegans_markers = ['Emb', 'Him', 'Unc', 'Lon', 'Dpy', Sma']

>>>useful_markers = celegans_markers[0:4]

#useful_makers = ['Emb', 'Him', 'Unc', 'Lon']


这段代码创建了一个新列表,其中仅含有4种易于区分的标记。

切片的每一个索引为起始点,第二个索引则是比所需要的最后一个元素的索引值大1的数字。list[i:j]就是原始列表从索引i(包含)处开始,一直到索引j处(不包含)结束的一个切片。


别名机制

在python中,当两个变量均引用了同一个值时,它们互为别名。当通过其中一个变量对列表进行了修改之后,另一个变量的值也会发生改变。

sort_and_reverse(L),对其进行排序,然后再范旭。

>>>celegans_markers = ['Emb', 'Him', 'Unc', 'Lon', 'Dpy', 'Lvl']

>>>sort_and_reverse(celegans_markers)

['Unc', 'Lvl', 'Lon', 'Him', 'Emb', 'Dpy']

>>>celegans_markers

['Unc', 'Lvl', 'Lon', 'Him', 'Emb', 'Dpy']


列表方法

方法说明L.append(v)将值v添加到列表L中L.insert(i,v)将值v插入到列表L的索引i处,同时将其后的元素往后移以便腾出位置L.remove(v)从列表L中移除第一次找到的值vL.reverse()反转列表L中的值的顺序L.sort()对列表L中的值以升序排序(字符串以字母表顺序为准)L.pop()移除并返回列表L的最后一个元素(该列表不得为空)许多列表方法都只是返回None而不是一个新列表。所有这些方法只是修改原列表而不会创建新列表。append函数的作用跟+不同,append函数添加的是单个的值,而+则要求两个操作数均为列表;append函数会修改原始列表,而不是创建一个新的。


嵌套列表

列表也可以含有列表,将子列表赋值给变量后,将会创建出该子列表的一个别名,通过这个引用对子列表做出的任何修改将反应到主列表中,反之亦然。

>>>life = [['Canada', 76.5], ['United States', 75.5], ['Mexico', 72.0]]

>>>canada = life[0]

>>>canada[1] = 80.0

>>>canada

['Canada', 80.0]

>>>life

[['Canada', 80.0], ['United States', 75.5], ['Mexico', 72.0]]


列表并不是python中唯一的列表,字符串其实就是一个不可变的字符序列。

元组

元组是一种不可变序列,元组使用的是圆括号而不是方括号、跟字符串和列表一样,元组可以被索引、切片和迭代。

>>>bases = ('A', 'C', 'G', 'T')

       for b in bases:

               print b

A

C

G

T

虽然()用于表示空元组,但带有一个元素的元组并不是写作(x),而是写作(x,),后面要多加一个逗号。这样做的目的是为了避免歧义,(5+3)既可以理解为8,也可以理解为仅含值8的一个元组。元组在创建出来之后就不能再修改了。不过其中的对象仍可以修改。

>>>life = (['Canada', 76.5], ['United States', 75.5], ['Mexico', 72.0])

>>>life[0][1] = 80.0

>>>life

(['Canada', 80.0], ['United States', 75.5], ['Mexico', 72.0])


把文件看做列表

>>>file = open("data.txt", "r")

open函数的第一个参数是一个字符串,它含有需要打开的文件的名称。第二个参数用于指定一个模式。共有三种选择,“r”表示读取,“w”表示写入,“a”表示追加。

写入和追加的区别在于,写入时将会抹去文件原有的内容,追加则是在文件末尾上加新的数据。

open函数的执行结果并不是文件的内容,返回的是 一个文件对象,该对象拥有文件内容所需的方法。

read方法,如果没有提供参数,则它将读取文件中的所有数据,并以字符串的形式返回。如果提供一个正整数参数,则它只会读取整数个字符。在处理很大的文件时,这非常有用。不管哪种方式,当文件中没有其他数据可读时,该方法会返回一个空字符串。readline功能为读取文件中的下一行文本。一行即直到下一个“行尾标记”之前的所有字符,并且包含该行尾标记。

命令行参数

在运行程序时,传递一些参数,跟调用函数或方法的做法差不多。这些值最终会被存入一个名为argv的特殊变量中(系统模块sys),即一个用于承载这些参数的列表(以字符串的形式)。

sys.argv[0]的值是需要执行的python程序的名称,其他的命令行参数分别存放在sys.argv[1], sys.argv[2]。。。

import sys

if __name__ == '__main__':

        start_line = int(sys.argv[1])

        end_line = int(sys.argv[2])


        data = open('data.txt', 'r')

        data_list = data.readlines()

        data.close()


        for line in data_list[start_line:end_line]:

                print line.strip()





原创粉丝点击