python学习1-列表和元组

这里引入一个新的概念: 数据结构,即通过某种方式组织在一起的数据元素的集合。

最基本的数据结构 是 序列。序列中的每一个元素被分配一个序号,即原色的位置,也称为 索引,第一个索引 为0,第二个为1,依次类推....

python 包含了 6种内建的序列    列表,元组,字符串,buffer 对象,xrange对象,Unicode字符串。

列表可以修改,元组不可以修改。

  • 序列概览:
# 序列种可以包换不同类型的元素
zhang = ['zhang' ,23] 
# 序列种可以包含其他序列
data  = [zhang,33]
print (data)   ----->[['zhang', 23], 33]
  • 序列的通用操作
  1. 索引 :使用附属索引时,Python 会从右边开始技术,最后一个元素编号是 -1,另外,字符串字面值就可以直接使用索引
greeting= 'hello'
print (greeting[0])  --->h
print (greeting[-1]) --->o
print (greeting[-4]) --->e
print ('hello'[1])   --->e

  2. 分片:使用分片操作来访问一定范围内的元素,如果分片种 最左边的索引比她右边的晚出现在序列种,结果就是一个空的序列 

nums = [1,2,3,4,5,6,7,8,9,10]
print (nums[3:6])  --->[4, 5, 6]
print (nums[0:1])  --->[1]
print (nums[-3:-1]) -->[8, 9]
print (nums[-3:])  --> [8, 9, 10]
print (nums[3:])   --> [4,5,6,7,8,9,10]
print (nums[:])    -->[1,2,3,4,5,6,7,8,9,10]
nums[-3:0] -->[]
#可以指定步长
nums[0:10:1] -->[1,2,3,4,5,6,7,8,9,10]
nums[0:10:2] -->[1,3,5,7,9]
#步长也可以是负数,这样就从右往左取
nums[8:3:-1] -->[9,8,7,6,5]

  3. 序列相加:两种相同类型的序列才可以想加

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

>>> 'hello' + 'zhang'
'hellozhang'

>>> [1,2,3] + 'hello'

Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
[1,2,3] + 'hello'
TypeError: can only concatenate list (not "str") to lis

  4.序列乘法

>>> 'python' *3
'pythonpythonpython'

>>> [1,2,3] *2
[1, 2, 3, 1, 2, 3]
 

   5.成员资格

>>> permission = 'yw'
>>> 'y' in permission
True
>>> 'x' in  permission
False
>>> user = ['zhang','wang']
>>> 'zhang' in user
True
>>> 'li' in user
False

  6.长度,最大值 最小值

>>> nums = [63,81,11]
>>> len(nums)
3
>>> max(nums)
81
>>> min(nums)
11

 

  • 列表 --列表是 可变的

    list 函数

>>> list('zhang')
['z', 'h', 'a', 'n', 'g']

#反向

>>> somelist = ['h','el','lo']
>>> ''.join(somelist)
'hello'

    列表的基本操作#元素赋值>>> a = [1,2,3]

>>> a[1] = 5
>>> a
[1, 5, 3]
>>> del a[2]  #删除元素
>>> a
[1, 5]
#分片赋值 >>> name = list('perl') >>> name ['p', 'e', 'r', 'l'] >>> name[2:] = list('ar') >>> name ['p', 'e', 'a', 'r']

#分片赋值可以代替原序列不同长度的 >>> name = list('Perl') >>> name ['P', 'e', 'r', 'l'] >>> name[1:] = list('ython') >>> name ['P', 'y', 't', 'h', 'o', 'n']
#插入
>>> nums = [1,5] >>> nums[1:1] = [2,3,4] >>> nums [1, 2, 3, 4, 5] >>> >>> nums [1, 2, 3, 4, 5]

#删除>>> nums[1:4] = [] >>> nums [1, 5]

    列表的方法

      1、append  --在类表的末尾增加新的对象

>>> lst = [2,'23']
>>> lst.append(3)
>>> lst
[2, '23', 3]

      2.count  --统计某个元素在列表中出现的次数

>>> x = [[1,2],1,3,1,2]
>>> x.count(1)
2
>>> x.count([1,2])
1

      3.extend --可以在列表的末尾一次性追加另一个序列的多个值,也就是可以用新列表 扩展原有列表 

    于列表的连接作用不同,连接作用返回一个新的列表,extend 是修改了被扩展的列表

>>> a =[1,2,3]
>>> b= [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]


>>> a= [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>> a
[1, 2, 3]

      4.index --从列表中找出某个值第一个匹配项的索引位置 找不到会抛错

>>> a = ['we','are','yong']
>>> a.index('are')
1
>>> a.index('aa')
Traceback (most recent call last):
  File "<pyshell#58>", line 1, in <module>
    a.index('aa')
ValueError: 'aa' is not in list

      5.insert --将对象插入到列表中  --修改了 原列表的值 却返回 None 值

>>> nums = [1,2,3,4,5]
>>> nums.insert(3,'zhang')
>>> nums
[1, 2, 3, 'zhang', 4, 5]

      6.pop 移除列表中组后一个元素,并返回该元素的值

>>> nums
[1, 2, 3, 'zhang', 4, 5]
>>> nums.pop()
5

       7.remove 用于移除列表中莫搁置的第一个匹配项,如果没有匹配报错 (改变了列表却没有返回值,同reverse(元素反响))  --修改了 原列表的值 却返回 None 值

>>> x = ['to', 'be','or' 'not','to','be']
>>> x.remove('be')
>>> x
['to', 'ornot', 'to', 'be']
>>> x.remove('too')
Traceback (most recent call last):
  File "<pyshell#68>", line 1, in <module>
    x.remove('too')
ValueError: list.remove(x): x not in list

       8.reverse 将列表中的原色反向存放  -----修改了 原列表的值 却返回 None 值

>>> x = [1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]

      9.sort 用于在原位置对列表进行排序,"在原位置排序"以为这 改变原来的列表,从而让其中的原色能按一定的顺序排列,二部是简单的返回一个已排序的列表副本

---修改了 原列表的值 却返回 None 值

>>> x = [2,1,4,7,5]
>>> x.sort()
>>> x
[1, 2, 4, 5, 7]

 

元组 ---与列表一样,也是一种序列,但不能修改(用 逗号隔开一些值,就自动创建了元组)

>>> 1,2,3
(1, 2, 3)
#tuple 函数 ---返回一个原组
>>> tuple([1,2,3])
(1, 2, 3)

 

posted @ 2017-03-02 10:15  大愚者  阅读(336)  评论(0编辑  收藏  举报