zoukankan      html  css  js  c++  java
  • 与孩子一起学编程12章

    列表list

    >>> family = ['Mom', 'Dad', 'Junior', 'Baby']
    >>> luckyNumbers = [2, 7, 14, 26, 30]


    family和luckyNumber都是python列表的例子,中括号里的以逗号分隔的各个项和元素。

    还可以创建一个空列表,然后再向里面增加元素,这是需要使用append(),若已有元素,则追加到列表的末尾。

    >>> friends = []
    >>> friends.append('David')
    >>> print friends
    ['David']
    >>> 

    列表里可以包含任何类型的数据,还可以包含列表,可以按元素的索引(index)来获取元素,列表索引从0开始计数

    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> letters[0]
    'a'
    >>> letters[3]
    'd'
    >>> 

    使用索引从列表一次获取多个元素,叫列表分片(slicing)

    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> print letters[1:4]
    ['b', 'c', 'd']
    >>> 

    获取分片时,从从第一个索引开始,在到达第二个索引之前结束,一种方法牢记取回的项数总是两个索引数之差。还有一个有意思的地方,先写个代码

    >>> print letters[1:2]
    ['b']
    >>> print letters[1]
    b
    >>> print type(letters[1])
    <type 'str'>
    >>> print type(letters[1:])
    <type 'list'>

    自己想想,问什么这样呢,一个是字符,一个是列表。分片还有以下几种简写方式,一起了解

    >>> print letters[:2]
    ['a', 'b']
    >>> letters[2:]
    ['c', 'd', 'e']
    >>> letters[:]
    ['a', 'b', 'c', 'd', 'e']
    >>> 

    letters[:]得到的是整个列表的副本,这在需要修改列表,还想保留原来的列表时,会很方便。

    可以使用索引 来修改某个列表元素

    >>> print letters
    ['a', 'b', 'c', 'd', 'e']
    >>> letters[2] = 'z'
    >>> print letters
    ['a', 'b', 'z', 'd', 'e']
    >>> 

    注意,不能用索引向列表增加新的元素

    >>> letters[5] = 'f'
    
    Traceback (most recent call last):
      File "<pyshell#21>", line 1, in <module>
        letters[5] = 'f'
    IndexError: list assignment index out of range
    >>> 

    向列表增加新元素的其他几种方法

    >>> letters.append('n')
    >>> print letters
    ['a', 'b', 'z', 'd', 'e', 'n']
    >>> 

    append()向列表末尾增加一个元素,extend()向列表末尾增加多个元素,insert()向列表的某个位置增加一个元素。

    >>> letters.append('n')
    >>> print letters
    ['a', 'b', 'z', 'd', 'e', 'n']
    >>> letters[2] = 'c'
    >>> letters.extend(['p', 'q', 'r'])
    >>> print letters
    ['a', 'b', 'c', 'd', 'e', 'n', 'p', 'q', 'r']
    >>> letters.insert(2, 'z')
    >>> print letters
    ['a', 'b', 'z', 'c', 'd', 'e', 'n', 'p', 'q', 'r']
    >>> 

    extend()和append()的区别,看看下面就明白了。

    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> letters.extend(['f', 'g', 'h'])
    >>> print letters
    ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> letters.append(['f', 'g', 'h'])
    >>> print letters
    ['a', 'b', 'c', 'd', 'e', ['f', 'g', 'h']]
    >>> 

    从列表删除或去除元素呢,有3种方法:remove()、del和pop()。先看看remove()

    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> letters.remove('c')
    >>> print letters
    ['a', 'b', 'd', 'e']
    >>> 

    del利用索引位置从列表中删除元素

    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> del letters[3]
    >>> print letters
    ['a', 'b', 'c', 'e']
    >>> 

    pop()从列表中取出最后一个元素交给你,还可以用索引取出元素

    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> lastletter = letters.pop()
    >>> print letters
    ['a', 'b', 'c', 'd']
    >>> print lastletter
    e
    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> second = letters.pop(1)
    >>> print second
    b
    >>> print letters
    ['a', 'c', 'd', 'e']
    >>> 

    搜索列表

    in关键字

    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> if 'a' in letters:
    	print "found 'a' in letters"
    
    found 'a' in letters
    >>> 'a' in letters
    True
    >>> 's' in letters
    False
    >>> 

    True和False是逻辑表达式的返回值。

    查找索引,使用index()方法,找出一个元素位于列表的什么位置

    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> print letters.index('d')
    3
    >>> 

    列表也可以使用循环来处理,下面的代码

    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> for letter in letters:
    	print letter
    
    	
    a
    b
    c
    d
    e
    >>> 

    这样不用数字列表,也可以迭代处理列表,上面的循环变量时letter。

    列表里的元素也可以进行排序,sort(),reverse(),sorted()。下面一一举例来描述

    >>> letters = ['a', 'b', 'c', 'd', 'e']
    >>> letters.sort()
    >>> print letters
    ['a', 'b', 'c', 'd', 'e']
    >>> letters = ['c', 'a', 'b', 'e', 'd']
    >>> letters.sort()
    >>> print letters
    ['a', 'b', 'c', 'd', 'e']
    >>> letters.reverse()
    >>> print letters
    ['e', 'd', 'c', 'b', 'a']
    >>> letters.sort()
    >>> print letters
    ['a', 'b', 'c', 'd', 'e']
    >>> letters.sort(reverse = True)
    >>> print letters
    ['e', 'd', 'c', 'b', 'a']
    >>> 

    还有个例子,列表排序后保留原来的顺序,只在列表的副本上进行排序

    >>> original_list = ['Tom', 'James', 'Fred']
    >>> new_list = original_list[:]
    >>> new_list.sort()
    >>> print original_list
    ['Tom', 'James', 'Fred']
    >>> print new_list
    ['Fred', 'James', 'Tom']
    >>> 

    还有个sorted()的例子

    >>> original = [5, 2, 3, 1, 4]
    >>> newer = sorted(original)
    >>> print original
    [5, 2, 3, 1, 4]
    >>> print newer
    [1, 2, 3, 4, 5]
    >>> 

    sorted()函数提供了原列表的一个有序副本


    双重列表:数据表

    先看看一个代码,每个学生的成绩使用一个列表

    >>> joeMarks = [55, 63, 77, 81]
    >>> tomMarks = [65, 61, 67, 72]
    >>> bethMarks = [97, 95, 92, 88]

    每个课程的成绩使用一个列表

    >>> mathMarks = [55, 65, 97]
    >>> scienceMarks = [63, 61, 95]
    >>> readingMarks = [77, 67, 92]
    >>> spellingMarks = [81, 72, 88]

    把这两个收集到一个数据结构中

    >>> classMarks = [joeMarks, tomMarks, bethMarks]
    >>> print classMarks
    [[55, 63, 77, 81], [65, 61, 67, 72], [97, 95, 92, 88]]

    这就是双重列表,列表元素本身又是一个列表,使用in来循环处理

    >>> for studentMarks in classMarks:
    	print studentMarks
    
    	
    [55, 63, 77, 81]
    [65, 61, 67, 72]
    [97, 95, 92, 88]

    从表中获取一个元素

    >>> print classMarks[0]
    [55, 63, 77, 81]
    >>> print classMarks[0][2]
    77
    >>> 


    这样列表的内容就这些,都是很简单的基础,但使用起来就不这么简单了,是不是啊。

    哦,还有,列表是可变的,数字和字符串是不可变的,不过python中还有一种不可变的列表,叫元组

    >>> my_tuple = ('red', 'green', 'blue')
    >>> 

    元组使用圆括号,而不是使用中括号。创立后元组是不可改变的,列表的操作都不能对元组使用,它一直保持不变,这一点要注意。







  • 相关阅读:
    iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
    python读文件和写文件
    asp.net中FileUpload得到上传文件的完整路径
    Derek解读Bytom源码-P2P网络 upnp端口映射
    Derek解读Bytom源码-启动与停止
    Derek解读Bytom源码-P2P网络 地址簿
    比原链社区项目一览(持续更新)
    Derek解读Bytom源码-protobuf生成比原核心代码
    Derek解读Bytom源码-Api Server接口服务
    Derek解读Bytom源码-孤块管理
  • 原文地址:https://www.cnblogs.com/pangblog/p/3317968.html
Copyright © 2011-2022 走看看