列表

列表
像字符串类型一样,列表类型也是序列式的数据类型,可以通过下标或者切片操作来访问某一个或者一块连续的元素。然而,相同的方面也就这些,字符串只能由字符组成,而不是不可变的(不能单独改变它的某个值),而列表则是能保留任意数目的 python 对象的灵活容器。就像我们将要看到的例子所式,创建列表非常简单,向列表中添加元素也是如此。
列表不仅可以包含python的标准类型,而且可以用用户定义的对象作为自己的元素。列表可以包含不同类型的对象,而且要比 C 或者 Python
自己的整数组类型都要灵活,因为数组类型所有的元素只能是一种类型。列表可以执行 pop,empt、 sort、 reverse等操作。列表也可以添加或者减少元素,还可以跟其他的列表结合或者把一个列表分成几个。可以对单独一个元素或者多个元素执行 insert、uodate 或 remove 操作。
元组类型在很多操作上都跟列表一样,许多用在列表上的例子在元组上照样能跑,它们的主要不同在于元组是不可变的,或者说是只读的,所以那些用于更新列表的操作,比如切片操作来更新一部分元素操作,就不能用于元组类型。

1.如何定义元组与列表
# 定义列表
li = [1, 1.0, "westos", (1,2,3,4), [1,2,3,4]]
print li
# 定义元组
t = (1, 1.0, "westos", (1,2,3,4), [1,2,3,4])
print t

2.分析列表的特性
1)索引

列表的切片操作就像字符串中一样;切片操作符([])和索引值或索引值范围一起使用。

2)成员操作符

innot in

这里写图片描述
3.列表的增、删、改、查

1)增

a.append(b) #向a列表中添加一个元素b添加到最后
a.insert(0,b)   #向a列表中0索引位置添加b(添加到制定位置)
a.extend(b,c)   #向a列表中最后位置添加多个元素b,c

2)改

a[0] = b    #通过列表的索引,对列表某个索引值重新赋值

3)查

buy = ["apple", "computer","apple"]
# 统计某个元素在列表中出现的次数 ;
print buy.count("apple")
2
# 找到某个值在列表中的索引值
print buy.index("computer")
1

4)删

buy = ["apple", "computer","apple"]
# 删除列表中遇到的第一个 value 值;
buy.remove("apple")
print buy
['computer', 'apple']
# 删除列表中第 i 个索引值;
del buy[0]
print buy
['computer', 'apple']
# 删除除了第一个元素之外的其他索引值
del buy[1:]
['apple']
# 删除列表对象
del buy

5)其他的排序及逆转

排序,如果说都是数字,按照数字大小排序 ;
是字母的话,按照 ASCII 码来排序;
**** 如何查看对应的 ASCII 码 ? ord('a')
li = [12, 34, 56, 8]
li.sort()
print li
[8, 12, 34, 56]
逆转; li[::-1]
li.reverse()
print li
[56, 34, 12, 8]

4.列表的特殊性
用列表构建其他数据结构
列表用容器和可变的特性,这使它非常灵活,用它来构建其他的数据结构不是难事。

1)堆栈

堆栈是一个后进先出(LIFO)的数据结构,其工作方式就像自助餐厅里面用于放盘子的弹簧支架。把盘子想象成对象,第一个离开堆栈的是你最后放上的那个。在栈上“push”元素是个常用术语,意思是把一个对象添加到堆栈。反之,要删除一个元素,你可以把它 "pop" 出堆栈。
#!/usr/bin/env python
#coding:utf-8
stack = []
info = """
栈操作
1). 入栈
2). 出栈
3). 栈长度
4). 查看栈
5). 退出
请输入你的选择:"""
# 死循环
while True:
choice = raw_input(info).strip()
if choice == "1":
print "入栈操作".center(40, "*")
value = raw_input("请输入入栈元素:")
stack.append(value)
print "元素%s入栈成功..." %(value)
elif choice == "2":
print "出栈操作".center(40, "*")
# if len(stack) == 0:
if not stack:
print "栈为空"
else:
item = stack.pop()
print "元素%s出栈成功...." %(item)
elif choice == "3":
print "查看栈长度".center(40, "*")
print len(stack)
elif choice == "4":
print "查看栈元素".center(40, "*")
if not stack:
print "栈为空"
for i in stack:
print i,
elif choice == "5":
exit()
else:
print "请输入正确的选择......"

2)队列
队列是先进先出(FIFO):
类似于去餐厅买饭排队;

#coding:utf-8
stack = []
info = """
栈操作
1). 入队
2). 出队
3). 查看栈
4). 退出
请输入你的选择:"""
while True:
choice = raw_input(info).strip()
if choice == "1":
print "入队操作".center(40, "*")
value = raw_input("请输入入栈元素:")
stack.append(value)
print "元素%s入队成功..." %(value)
elif choice == "2":
print "出队操作".center(40, "*")
# if len(stack) == 0:
if not stack:
print "队为空"
else:
item = stack.pop(0)
print "元素%s出队成功...." %(item)
elif choice == "3":
print "查看队元素".center(40, "*")
if not stack:
print "队为空"
for i in stack:
print i,
elif choice == "4":
exit()
else:
print "请输入正确的选择......"

“`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值