• Python成长之路第一篇(2)__初识列表和元组


    可以将列表和元组当成普通的“数组”,他能保存任意数量任意类型的Python对象,和数组一样都是通过数字0索引访问元素,列表和元组可以存储不同类型的对象,列表和元组有几处重要区别。列表元素用([])包括,元素的个数和值可以改变,而元组用({})包括,不能更改。元组可以看成是只读的列表

    一、初识列表

    1、下面是一个正常的列表

    >>> lis = ['xiaoyuan',25]

    在序列中,可以包含其他的序列,也就是列表可以包含列表元组等

    >>> lis = ['xiaoyuan',25]
    >>> lis_jo = ['john',30]
    >>> date = [lis,lis_jo]
    >>> date
    [['xiaoyuan', 25], ['john', 30]]

    注意:Python中还有一种名为容器(container)的数据结构。容器基本上是包含其他对象的任意对象。序列型(例如列表,元组)和映射型(例如字典)。序列中的每个元素都有自己的编号,而映射的每一个元素都有一个名字(也称为键)。后续会介绍,至于不是序列也不是映射的容器类型,例如集合(set),后序介绍

    2、序列的通用操作

    所有序列类型都可以进行某种特定的操作,这些操作包括:索引(indexing),分片(sliceing),加(adding),乘(multiplying)以及检查每个元素是否属于序列的成员(判断元素是否存在于序列)。还有计算序列的长度,找出最大元素和最小元素的内建函数。以后还有一个重要的操作进行讲解,迭代(iteration)。对序列进行迭代的意思。

    (1)索引序列中的所有元素都有编号这个编号从0开始递增:

    >>> lis = ['xiaoyuan',25]
    >>> lis_jo = ['john',30]
    >>> date = [lis,lis_jo]
    >>> date
    [['xiaoyuan', 25], ['john', 30]]
    >>> sta = 'hellow'
    >>> sta[0]
    'h'
    >>> sta[-1]
    'w'
    >>> date[0]
    ['xiaoyuan', 25]

    由此可见【-1】表示最后一个元素

    (2)分片

    ①我们可以使用分片来对一个范围的元素进行操作

    >>> tist = [1,2,3,4,5,6]
    >>> new = "abcdefg"
    >>> tist[1:3]
    [2, 3]
    >>> new[0:4]
    'abcd'

    >>> tist[2:]   #从第二个元素到最后
    [3, 4, 5, 6]

    ②当我们想要从后面取元素怎么办?相信大家也知道了就是使用‘ – ’

    >>> tist = [1,2,3,4,5,6]
    >>>
    >>> tist[-3:-1]
    [4, 5]
    >>> tist[-4:]   #这里也就是从倒数第四个元素到最后
    [3, 4, 5, 6]

    小练习1

    我们知道域名是由www.xxxx.cn其中分为三个部分.cn为中国,xxxx表示域名,www,表示万维网那么我们想要取出域名怎么办呢?

    1 >>> url = 'www.aaa.cn' 
    2 >>> name = url[4:-3] 
    3 >>> name
    4 
    5 'aaa'
    6 
    7 >>> print 'donaim name:<'+name+'>'+'type:'+url[-2:] 
    8 donaim name:<aaa>type:cn
    小练习1

    ③步长,也就是按照步长的长度来取元素,当步长为1的时候就会输出所以的元素

    >>> tist = [1,2,3,4,5,6,7,8,9,10]

    >>> tist[0:10:1]
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> tist[0:10:2]
    [1, 3, 5, 7, 9]

    如果我们想将元素从头到最后每个3个元素取出一个那么只需要这样即可

    >>> tist[::3]
    [1, 4, 7, 10]

    (4)追加元素 list.append

    >>> lis = [1,2,3,4,5,6]
    >>> lis.append(7)
    >>> lis
    [1, 2, 3, 4, 5, 6, 7]

    (5)列表删除元素del list[]

    >>> lis
    [1, 2, 3, 4, 5, 6, 7]
    >>> del lis[0]
    >>> lis
    [2, 3, 4, 5, 6, 7]

    (6)列表长度:len()

    >>> len(lis)
    6

    (7)查找某个元素是否包含:“ 5“ in lis当存在返回True(真)否则为False(假)

    >>> 5 in lis
    True
    >>> 1 in lis
    False

    (8)将列表变成字符串并定义连接方式 “_”.join(lis)

    >>> name_lis = ["a","b","c"]
    >>> '_'.join(name_lis)
    'a_b_c’

    (9)序列相加

    >>> [1,2,3]+[4,5,6]
    [1, 2, 3, 4, 5, 6]

    >>> 'hell'+'world!'
    'hellworld!'

    (10)乘法 *

    >>> 'hell'*5
    'hellhellhellhellhell'
    >>> [1]*5
    [1, 1, 1, 1, 1]

    (11)list函数,因为字符串不能像列表一样修改所以,将字符串转换成列表是就需要使用list(list函数适用于所有类型的序列)

    >>> tup = 'asdfghj'

    >>> list(tup)
    ['a', 's', 'd', 'f', 'g', 'h', 'j']

    (12)元素赋值

    >>> tup = list(tup)
    >>> tup
    ['a', 's', 'd', 'f', 'g', 'h', 'j']
    >>> tup[0] = 'A'
    >>> tup
    ['A', 's', 'd', 'f', 'g', 'h', 'j']

    小练习2

    需求编写一个欢迎信息,要求格式化成方盒进行输出,并根据用户输入的内容而变换

         image

     1 inpot = raw_input("your name:") #欢迎信息
     2 text = len(inpot)
     3 scr = 17+text    #设置一个长度
     4 left = (scr) // 2     #设置前方空格的空隙
     5 #下方输出的内容可以根据输入字符串的长度进行变化
     6 print   #输出空
     7 print ' ' * left + '+'+ '-'*(scr) + '+'
     8 print ' ' * left + '|'+ ' '*scr + '|'
     9 print ' ' * left + '|'+'Nice to meet you:' +inpot+ '|'
    10 print ' ' * left + '|'+ ' '*scr + '|'
    11 print ' ' * left + '+'+ '-'*(scr) + '+'
    小练习2

    二、初识元组

    1、下面是一个正常的元组

    >>> name = ('a','b','c')
    >>> name
    ('a', 'b', 'c')

    元组的基本操作跟列表类似,唯一的区别就是列表可以修改元组不可以修改

    当我们查看a是否包含在name_tup元组中可以正常执行,但是想删除的时候就报错错误为元组对象不支持项删除

    >>> name_tup = ('a','b','c')
    >>> 'a' in name_tup
    True
    >>> del name_tup[0]

    Traceback (most recent call last):
      File "<pyshell#45>", line 1, in <module>
        del name_tup[0]
    TypeError: 'tuple' object doesn't support item deletion

    最后推荐大家使用的编译器Pycharm

  • 相关阅读:
    Quartz.NET-2.3.3 各种 数据库配置 类别大全
    C#获取当前路径的七种方法 【转载】
    BCB 如何拦截TAB键消息
    用union 和 struct 位域操作
    表值函数
    C#中 委托和事件的关系
    关于C++ Builder Codegurad 问题的排查。
    存储过程中使用事务的“正规”写法
    C++ 中对vector<T*> 数组的查找和排序
    BCB 中 Application->CreateForm 和 New 的一个区别
  • 原文地址:https://www.cnblogs.com/bj-xy/p/5153842.html
Copyright © 2020-2023  润新知