痴心VS绝对 发表于 2018-8-9 08:22:50

python入门:列表和元组

  列表与元组的主要不同在于,列表是可以修改的,元组不可以。列表适用于需要中途添加元素的情形,元组适用于出于某种考虑禁止修改序列的情形。在需要处理一系列值时,序列很有用,在数据库中,你可能使用序列来表示人,其中第一个表示姓名,第二个表示年龄。用列表表示如下:
user=['Andy',20]  序列还可包含其他序列
user=['Andy',20]  
use=['john',21]
  
database=
  
database
  
[['Andy', 20], ['john', 21]]
  
data=['Aurora',user]
  
data
  
['Aurora', ['Andy', 20]]
  有几种操作使用于所有序列,包括索引、切片、相加、相乘和成员检查。另外还有一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素。
  索引:
  序列中所有的元素都有编号-从0开始递增
set='Hello'  
set
  
'H'
  
字符串就是由字符组成的序列,索引0指向第一个元素,这里为字母H,不同于其他一些语言,python没有表示字符的类型。因此一个字符就是只包含一个元素的字符串。
  这称为索引,还可使用负索引来获取元素
set[-1]  
'o'
  对于字符串字面量(以及其他序列字面量)可直接对其执行索引操作,无需先将其赋给变量,这与先赋给变量在对变量执行索引操作的效果一样。
'Hello'  
'e'
  如果函数调用返回一个序列,可直接对其执行索引操作。例如,你只想获取用户输入的姓名第二位:
name=input('name: ')  
name: john
  
name
  
'h'
  切片:
  使用索引来访问单个元素外,还可使用切片来访问特定范围内的元素,使用两个索引用冒号分隔:
tag='<a href=&quot;How long have you been studying python&quot;>python web site</a>'  
tag
  
'How long have you bee'
  
tag
  
'python web site'
  切片适用于提取序列一部分,其中的编号非常重要,第一个索引是包含第一个元素的编号,第二个索引是切片后前一位的元素编号(下标从0开始)
number=  
number
  

  两个索引来指定切片的边界,其中一个索引指定的元素包含在切片内,第二个索引指定的元素不包含在切片内。
  简写:
# 如果切片结束与序列末尾,可省略第二个索引:  
number[-3:]
  

  
# 如果切片始于序列开头,可省略第一个索引:
  
number[:3]
  

  
# 复制序列
  
number[:]
  

  步长:
  执行切片操作时,显示或隐示地制定起点和终点,但通常省略另一个参数,即步长。在普通切片中,步长为1(从一个元素移动到下一个元素),切片包含起点和终点之间的所有元素。
number  

  
number
  

  也可以简写:
number[::4]  

  步长不能为0,但是可以是负数,这样获取元素的位置是从右向左。
number[::-2]  

  步长为正数时,它从起点移到终点,步长为负数时,它从终点移到起点。
  序列相加:
+  

  
+'world'
  
Traceback (most recent call last):
  
File &quot;<pyshell#12>&quot;, line 1, in <module>
  
    +'world'
  
TypeError: can only concatenate list (not &quot;str&quot;) to list
  不能拼接序列与字符串,虽然他们都是序列,一般不能拼接不同类型的序列。
  乘法:
'hello' * 2  
'hellohello'
  
* 3
  

  如先定义序列但并不为其赋值可用
name= *5  
name
  

  成员资格:
  检查特定的值是否包含在序列中,使用in.满足条件返回true,否则返回false.
name='Andy'  
'A' in name
  
True
  
# 对于字符串来说只有它包含的字符才是其成员或元素。
  
'p' in 'python'
  
True
  长度、最小值、最大值
number=  
len(number)
  
3
  
max(number)
  
100
  
min(number)
  
20
  
max(2,3,7)
  
7
  列表常用方法
#赋值  
x =
  
x= 3
  
x
  

  
# 删除元素
  
x =
  
del x
  
x
  

  
# 给切片赋值
  
name=list('Perl')
  
name
  
['P', 'e', 'r', 'l']
  
name=list('ar')
  
name
  
['P', 'e', 'r', 'a', 'r']
  
# 还可以在不删除原有元素的情况下插入新元素
  
name=list('el')
  
name
  
['P', 'r', 'l', 'e', 'r', 'a', 'r']
  
del name
  
name
  
['P', 'l', 'r', 'r']
  方法是与对象(列表、数、字符串等)联系紧密的函数。
# 在末尾追加元素:append  
number.append(4)
  
number
  

  
# 清空列表:clear
  
number.clear()
  
number
  
[]
  
# 复制:copy
  
a=
  
b = a
  
b=4
  
b
  

  
a
  

  

  
a =
  
b=a.copy()
  
b=5
  
a
  

  
# 计数:count
  
['to','be','or','not','to','be'].count('to')
  
2
  
x=[,1,2,]]
  
x.count(1)
  
1
  
# 扩展追加exend
  
a =
  
b=
  
a.extend(b)
  
a
  

  
b
  

  

  
a+b
  

  
a
  

  
b
  

  

  
# 查找第一次在序列中出现的索引
  
a =['to','be','or','not','to','be']
  
a.index('be')
  
1
  
a
  
'be'
  
# inster:插入
  
number =
  
number.insert(2,8)
  
number
  

  
# pop删除末尾最后一个元素并返回删除元素,pop是唯一既修改列表又返回一个非none值的列表方法。
  
number.pop()
  
5
  
number
  

  

  
number.insert(0,number.pop(0))
  

  
# 删除第一个指定值的元素
  
a =['to','be','or','not','to','be']
  
a.remove('to')
  
a
  
['be', 'or', 'not', 'to', 'be']
  
# 倒序排列:reverse
  
number =
  
number.reverse()
  
number
  

  
# 对列表就地排序指对原表进行修改:sort
  
number =
  
number.sort()
  
number
  

  元组:不可修改的序列
  元组的几种写法。
(1,2,3)  
1,2,3
  
(2,)
  
2,
3 * (20+2)  
66
  
3* (20+2,)
  
(22, 22, 22)
  
(22)与22完全等效,加上逗号,就能完全改变表达式的值
  函数tuple的工作原理与list很像,它将一个序列作为参数,并将其转换为元组。如果参数是元组,就原封不动的返回。
tuple()  
(1,2,3)
  
tuple('abc')
  
('a','b','c')
  
tuple((1,2,3))
  
(1,2,3)
  
x = 1,2,3
  
x
  
2
  
x
  
(1,2)
页: [1]
查看完整版本: python入门:列表和元组