2.2数据结构与序列

1.列表

liebiao = ['编号89757','石景文','David','Bob',45,66]
len(liebiao)

 

6

 

用索引来访问list中每一个位置的元素,索引是从0开始的

liebiao[1]

 

'石景文'

 

liebiao[-1]

 

66

 

liebiao[5]

 

66

 

1)引用传递 将不同列表指向同一个列表

lie1 = [1,2,3,4]

lie2 = lie1
lie2

 

[1, 2, 3, 4]

 

2)分片 隔开的两个索引来实现。如果提供两个索引作为边界,则第1个索引的元素包含在分片内,而第2个则不包含在分片内

要点:左闭右开

liebiao[:]

 

['编号89757', '徐超', 'David', 'Bob', 45, 66]

 

liebiao[2:4]

 

['David', 'Bob']

 

liebiao[:3]

 

['编号89757', '徐超', 'David']

 

liebiao[2:]

 

['David', 'Bob', 45, 66]

 

3)序列相加

list1 = [1,2,3,4]
list2 = [2,3,3,3]

list1 + list2

 

[1, 2, 3, 4, 2, 3, 3, 3]

 

4)成员资格

liebiao

 

['编号89757', '徐超', 'David', 'Bob', 45, 66]

 

45 in liebiao

 

True

 

5)长度、最大值、最小值(len、min、max)

ll = ['编号89757', '徐超', 'David', 'Bob', '45', '66']

max(ll)

 

'编号89757'

 

min(ll)

 

'45'

 

len(ll)

 

6

 

6)删除元素与分片赋值

lizi = list('jskajnsckarituwpo')
del lizi[3:]
lizi

 

['j', 's', 'k']

 

lizi[3:]=list('2w74r7')
lizi

 

['j', 's', 'k', '2', 'w', '7', '4', 'r', '7']

 

del lizi[4:]
lizi

 

['j', 's', 'k', '2']

 

lizi[2:]=list('2333')
lizi

 

['j', 's', '2', '3', '3', '3']

 

7)内置函数

enumerate函数

for x in enumerate(lizi):
   print(x)
(0, 'j')
(1, 's')
(2, '2')
(3, '3')
(4, '3')
(5, '3')

sorted函数

lizi3 = [5,3,21,45,7,56,2,33,90]

sorted(lizi3)

 

[2, 3, 5, 7, 21, 33, 45, 56, 90]

 

sorted(lizi3,reverse=True)

 

[90, 56, 45, 33, 21, 7, 5, 3, 2]

 

zip函数

guojia = ['china','USA','riben','deguo']
qidu = ['yazhou','meizhou','dongya','ouzhou']

list(zip(guojia,qidu))

 

[('china', 'yazhou'),
('USA', 'meizhou'),
('riben', 'dongya'),
('deguo', 'ouzhou')]

 

8)列表方法

append 在列表末尾追加新的元素,不返回值

lbff = ['编号89757','徐超','David','Bob','45',66,'尼克里森']

lbff

 

['编号89757', '徐超', 'David', 'Bob', '45', 66, '尼克里森']

 

lbff.append('王朝马汉')
lbff

 

['编号89757',
'徐超',
'David',
'Bob',
'45',
66,
'尼克里森',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'王朝马汉']

 

count 统计某个元素在列表中出现的次数,返回值

lbff.count('王朝马汉')

 

4

 

extend 在列表的末尾一次性追加另一个列表中的多个值,不返回值

ex = ['zhang heng','taobao']
lbff.extend(ex)

lbff

 

['编号89757',
'徐超',
'David',
'Bob',
'45',
66,
'尼克里森',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'zhang heng',
'taobao',
'zhang heng',
'taobao']

 

index 从列表中找出某个值第一个匹配项的索引位置,返回值

lbff.index('王朝马汉')

 

7

 

insert 将对象插入到列表中,不返回值

lbff.insert(3,'WORD')

lbff

 

['编号89757',
'PPT',
'徐超',
'WORD',
'David',
'Bob',
'45',
66,
'尼克里森',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'zhang heng',
'taobao',
'zhang heng',
'taobao']

 

pop 移除列表中的一个元素(默认最后一个),返回该元素的值

lbff.pop()

lbff

 

['编号89757',
'PPT',
'徐超',
'WORD',
'David',
'Bob',
'45',
66,
'尼克里森',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'王朝马汉']

 

sort 在原位置对列表进行排序,不返回值

shulie = [5,3,233,666,21,45,7,56,2,33,90]

shulie.sort(reverse=True)
shulie

 

[666, 233, 90, 56, 45, 33, 21, 7, 5, 3, 2]

 

2.元组

tuple

yz = tuple('pltgmmdhcnsk')
yz

 

('p', 'l', 't', 'g', 'm', 'm', 'd', 'h', 'c', 'n', 's', 'k')

 

元组拆包(unpacking): 对元组型变量表达式进行赋值,Python会尝试将“=”右侧的值进行拆包

country = tuple(guojia)

country

 

('china', 'USA', 'riben', 'deguo')

 

x1,x2,x3,x4 = country

x4

 

'deguo'

 

country.count('china')

 

1

 

3.字典

使用键-值(key-value)存储,具有极快的查找速度。

字典使用“{ }”用“:”分隔键和值并用“,”分隔项来定义。

注意:字典中的键是唯一,值不一定是唯一的

 

zidian = {'迈克尔':'66','孙尚香':'78','李白':'88','始皇帝':'94','贞德':'81'}

zidian

 

{'始皇帝': '94', '孙尚香': '78', '李白': '88', '贞德': '81', '迈克尔': '66'}

 

字典的操作

1)len() 返回d中项(键-值对)的数量

len(zidian)

 

5

 

2)zidian[k] 返回关联到键k上的值

zidian['李白']

 

'88'

 

3)zidian[k]=v 将值v关联到键k上

zidian['贞德'] = 86
zidian

 

{'始皇帝': '94', '孙尚香': '78', '李白': '88', '贞德': 86, '迈克尔': '66'}

 

4)del zidian[k] 删除键为k的项

del zidian['迈克尔'] #如果用del zidian['94']就会报错,为什么?

zidian

5)k in zidian 检查zidian中是否含有键k的项

zidian

 

{'始皇帝': '94', '孙尚香': '78', '李白': '88', '贞德': 86}

 

'孙尚香' in zidian

 

True

 

字典的特性

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

zidian2 = {'张龙':'66','赵虎':'55','赵虎':'71','王朝':'77','马汉':'74','展昭':'88'}

zidian2

 

{'展昭': '88', '张龙': '66', '王朝': '77', '赵虎': '71', '马汉': '74'}

 

2)键必须不可变,所以可以用数、字符串或元组充当,用列表就不行

zidian3 = {'包青天':'92','三廉王':'87',['赵贞']:'44'}
    
zidian3
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-101-2435c3b44439> in <module>()
----> 1 zidian3 = {'包青天':'92','三廉王':'87',['赵贞']:'44'}
      2 
      3 zidian3
TypeError: unhashable type: 'list'

 

上一篇:《圣经》新旧约66卷之各书卷故事梗概,你值得拥有!


下一篇:Android第四周