设为首页 收藏本站
查看: 1410|回复: 0

[经验分享] Python基础教程笔记——列表和元组

[复制链接]

尚未签到

发表于 2015-4-20 10:08:38 | 显示全部楼层 |阅读模式
  
  
  



列表和元组



Table of Contents




  • 1 序列概览
  • 2 通用序列操作

    • 2.1 索引
    • 2.2 分片
    • 2.3 序列相加
    • 2.4 乘法
    • 2.5 成员资格
    • 2.6 长度,最大值,最小值


  • 3 列表:Python的“苦力”

    • 3.1 list
    • 3.2 基本列表操作
    • 3.3 列表方法


  • 4 元组

    • 4.1 元组定义:
    • 4.2 tuple函数
    • 4.3 元组的意义:





1 序列概览



  • 说明:序列包括(列表,元组,字符串,buffer对象,xrange对象)
  • 注意:列表可以修改,元组不能被修改。
  • 例子:

>>> edward=["Edward Gumby", 42]
>>> bill =["Bill Gunn", 30]
>>> database = [edward, bill]
>>> database
[['Edward Gumby', 42], ['Bill Gunn', 30]]
>>> database[0]
['Edward Gumby', 42]




2 通用序列操作





2.1 索引



  • 说明:

    • 索引值可正可负,正索引从0开始,从左往右;负索引从-1开始,从右往左。使用负数索引时,python会从最后一个元素开始计 数。最后一个元素的位置编号是-1;
    • 字符串可以直接使用索引;

  • 例子:

>>> str = "Test"

#一般索引
>>> str[0]
'T'
>>> str[1]
'e'

#负数索引
>>> str[-1]
't'
>>> str[-2]
's'

#字符串直接索引
>>> "Test"[0]
'T'
>>> "Test"[1]
'e'
>>> "Test"[-1]
't'



2.2 分片



  • 说明:使用分片操作来访问一定范围内的元素。分片通过冒号相隔的两个 索引来实现。
  • 注意:

    • 第一个索引是需要提取部分的第一个元素的索引值,而最后的索引 则是分片之后右侧剩下部分的第一个元素的索引;
    • 如果右侧全部提取,则分片时,可以不写右侧索引,也可以将右侧索引 写最后一个元素的下一个索引;
    • 如果左侧全部提取,刚分片时,左侧索引可以写0,也可以不写;
    • 设置步长:不指明步长时,步长取1,也可以指定步长,步长不能为 0 ,步长也可以是负数,可以反序输出提取部分。

  • 例子:

>>> data=[1,2,3,4,5,6,7,8,9,10]
#提取序列的一部分
>>> data[1:6]
[2, 3, 4, 5, 6]

#提取右侧全部
>>> data[3:]
[4, 5, 6, 7, 8, 9, 10]
>>> data[7:10]
[8, 9, 10]

#提取左侧全部
>>> data[:3]
[1, 2, 3]
>>> data[0:3]
[1, 2, 3]

#负索引提取
>>> data[-3:-1]
[8, 9]
>>> data[-3:]
[8, 9, 10]

#设置步长
>>> data[::2]
[1, 3, 5, 7, 9]
>>> data[1::2]
[2, 4, 6, 8, 10]

#步长也可以是负数
>>> data[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> data[-1:-8:-1]
[10, 9, 8, 7, 6, 5, 4]
>>> data[8:1:-1]
[9, 8, 7, 6, 5, 4, 3]





2.3 序列相加



  • 说明:通过加号可以进行序列连接;
  • 例子:

#序列相加
>>> first=[1,2]
>>> second=[3,4]
>>> first+second
[1, 2, 3, 4]




2.4 乘法



  • 说明:用一个正整型数乘以序列,可以得到一个新的重复了n次的序列
  • 注意:

    • 空列表可以简单地通过两个中括号进行表示([])
    • None 是Python关键字,表示“什么也没有”

  • 例子:

#10个python
>>> 'python ' * 10
'python python python python python python python python python python '

#10个空对象
>>> [None] * 10
[None, None, None, None, None, None, None, None, None, None]

#打印盒子
mystr = input("Please input a string:")
strLen = len(mystr)
lineStart = 20
print (" " * lineStart + "+" + "-" * strLen + "+")
print (" " * lineStart + "|" + " " * strLen + "|")
print (" " * lineStart + "|" + mystr + "|")
print (" " * lineStart + "|" + " " * strLen + "|")
print (" " * lineStart + "+" + "-" * strLen + "+")

>>>
Please input a string:My name is Bill Gunn
+--------------------+
|                    |
|My name is Bill Gunn|
|                    |
+--------------------+






2.5 成员资格



  • 说明:使用关键字 in 检查值是否在序列中。如果值在序列中返回 “True”,否则返回“False”。值可以是元素也可以是子序列。
  • 例子:

#检查值是否在序列中
>>> mystr="this is a string"
>>> 'this' in mystr
True




2.6 长度,最大值,最小值



  • 说明:

    • len :返回序列包含元素的数量;
    • min :返回序列中的最小值;
    • max :返回序列中的最大值;


#min,max和len的用法
>>> data = [12,31,2,1,3,12,3,13,131234,12]
>>> min(data)
1
>>> max(data)
131234
>>> len(data)
10





3 列表:Python的“苦力”





3.1 list



  • 说明:可以将字符串或其他序列转换成列表。
  • 注意:list是类型,不是函数。
  • 例子:

>>> list("This is a test string")
['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't', ' ', 's', 't', 'r', 'i', 'n', 'g']




3.2 基本列表操作



  • 说明:

    • 元素赋值:使用索引标记来为某个特定的,位置明确的元素赋值;
    • 元素删除:使用 del 语句;
    • 分片赋值:

      • 可以一次为多个元素赋值;
      • 原片与新片可以长度不同;
      • 分片赋值可以在指定位置插入新的元素;


  • 例子:

>>> mylist = [1,2,3,4,5]

#列表元素赋值
#索引必须在列表范围内
>>> mylist[10] = 10
Traceback (most recent call last):
File "", line 1, in
mylist[10] = 10
IndexError: list assignment index out of range
>>> mylist[0] = 100
>>> mylist
[100, 2, 3, 4, 5]

#删除元素
>>> del(mylist[0])
>>> mylist
[2, 3, 4, 5]
>>>

#分片赋值
>>> mystr = list("Nale Gunn")
>>> mystr[0:4] = list("Bill")
>>> mystr
['B', 'i', 'l', 'l', ' ', 'G', 'u', 'n', 'n']
#分片赋值时,原片与新片长度不同
>>> mystr=list("Bill Gunn")
>>> mystr[-5:] = list("gunn@gmail.com")
>>> mystr
['B', 'i', 'l', 'l', 'g', 'u', 'n', 'n', '@', 'g', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm']
>>>
#分片赋值可以在指定位置插入新的元素
>>> mystr=list("Bill Gunn")
>>> mystr[0:0] = list("My name is ")
>>> mystr
['M', 'y', ' ', 'n', 'a', 'm', 'e', ' ', 'i', 's', ' ', 'B', 'i', 'l', 'l', ' ', 'G', 'u', 'n', 'n']
>>>




3.3 列表方法



  • 说明:

    • append:用于在列表末尾追加一个新的元素;列表调用该方法后,直接被该 方法修改;
    • count:用于统计某个元素在列表中出现的次数;
    • extend:在列表的末尾一次性追加另一个列表中的多个元素,该方法 也是直接修改原列表,这也是与列表连接操作的区别;
    • index:找出某个匹配项第一次出现的索引;
    • insert:在列表中插入新的对象;
    • pop:移除列表中的一个值(默认是最后一个),并返回该元素的值;
    • remove:用于移除某个值在列表中的第一个匹配项;
    • reverse:将列表中的值反向存放;
    • sort:对列表进行排序;
    • sorted内建函数:对序列进行反序,并返回一个列表

  • 注意:

    • 列表复制:用分片的方法复制比较有效率。

  • 例子:

#append
>>> lst = list("Test")
>>> lst.append(list("String"))
>>> lst
['T', 'e', 's', 't', ['S', 't', 'r', 'i', 'n', 'g']]
>>> lst.append("String")
>>> lst
['T', 'e', 's', 't', ['S', 't', 'r', 'i', 'n', 'g'], 'String']
>>> lst=list("Test")
>>> lst.append("!")
>>> lst
['T', 'e', 's', 't', '!']

#count
>>> lst.count('T')
1
>>> lst.count('t')
1

#extend
>>> lst.extend(list("HaHa"))
>>> lst
['T', 'e', 's', 't', '!', 'H', 'a', 'H', 'a']
>>> lst.index('t')
3
>>>

#pop
>>> lst = [1,2,3]
>>> lst.pop()
3
>>> lst
[1, 2]
>>> lst.pop(0)
1
>>> lst
[2]
>>>

#pop
>>> lst = [1,2,3]
>>> lst.pop()
3
>>> lst
[1, 2]
>>> lst.pop(0)
1
>>> lst
[2]

#remove
>>> lst=list("12345678")
>>> lst
['1', '2', '3', '4', '5', '6', '7', '8']
#删除不存在的对象会报错
>>> lst.remove(2)
Traceback (most recent call last):
File "", line 1, in
lst.remove(2)
ValueError: list.remove(x): x not in list
>>> lst.remove('2')
>>> lst
['1', '3', '4', '5', '6', '7', '8']

#reverse
>>> lst.reverse()
>>> lst
['8', '7', '6', '5', '4', '3', '1']

#sort
>>> lst.sort()
>>> lst
['1', '3', '4', '5', '6', '7', '8']
>>> lst.sort(key=len)
>>> lst
['1', '3', '4', '5', '6', '7', '8']
>>> lst = ['asdf','qwersf','aaf','s','afasfd','qre']
>>> lst.sort(key=len)
>>> lst
['s', 'aaf', 'qre', 'asdf', 'qwersf', 'afasfd']
>>> lst.sort(key=len,reverse=True)
>>> lst
['qwersf', 'afasfd', 'asdf', 'aaf', 'qre', 's']
>>>

#列表复制
>>> x = list('123456')
#下面的复制,只是让y也指向x指向的对象,所以修改x,也会影响y的值
>>> y = x
>>> x.reverse()
>>> y
['6', '5', '4', '3', '2', '1']
#用分片的方法复制,x与y相互独立,修改x,不会影响y
>>> y=x[:]
>>> y.sort()
>>> x
['6', '5', '4', '3', '2', '1']
>>> y
['1', '2', '3', '4', '5', '6']
>>>





4 元组





4.1 元组定义:



  • 说明:元组不可以修改,一般用圆括号括起来
  • 例子:

#一般元组
>>> 1,2,3
(1, 2, 3)
>>> (1,2,3)
(1, 2, 3)

#一个元素的元组
>>> (1,)
(1,)
>>> 2,
(2,)

#空元组
>>> ()
()
>>>

#元组的乘法
>>> 4* (2,)
(2, 2, 2, 2)
>>>




4.2 tuple函数



  • 说明:以一个序列为参数,将其转换为元组;
  • 例子:

>>> tuple("CONSTANT")
('C', 'O', 'N', 'S', 'T', 'A', 'N', 'T')
>>> tuple(list("CONST"))
('C', 'O', 'N', 'S', 'T')
>>>




4.3 元组的意义:



  • 元组可以在映射中当作键使用;
  • 元组作为很多内建函数和方法的返回值存在。



Date: 2011-11-14 09:28:51
Author:
Org version 7.7 with Emacs version 23

Validate XHTML 1.0

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58689-1-1.html 上篇帖子: selenium webdriver (python) 第二版 下篇帖子: 用Python获取本机网卡IP数据包
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表