python基础四——内置数据类型list及tuple

list列表

python中好多数据类型跟JavaScript十分相像,话不多说,切入正题。

下边我们来看下list [ ]

list是python内置的一种数据结构,list是一种有序的集合,可以随时添加删除里边的元素!这与字符串str、元组tuple十分类似,他们都是一种有序集合,共同点都可以使用 [ ] 通过索引来取值、支持通过切片进行截取元素!不同点:元祖temple中的元素不可改变!!!

author = ["l","x","c"]
print(author) # ['l','x','c']

1、用len()函数可获得list中元素个数:

author = ["l","x","c"]
print(len(author)) # 3

2、索引

可以用索引访问到list中的元素

author = ["l","x","c"]
print(author[0])  # 'l'
print(author[2])  # 'c'
print(author[-1])  # 'c'
print(author[3])  # 报错 IndexError: list index out of range

上边代码,list中的索引是从0开始的,-1则是倒数第一个,如果超出list中的索引会报错。。。

补充下:(列表取值、列表相加、列表相乘)

对列表list的取值、相加、相乘与字符串一样

取值或截取:

list = [[1,2,3],[4,5,6],[7,8,9]] 
print(list[0]) # [1,2,3] # 取第一个元素
print(list[0:]) # [[1,2,3],[4,5,6],[7,8,9]] # 从0截取到最后
print(list[-1:]) # [[7,8,9]] # 切片的概念,从倒数第一位截取到最后
print(list[0][0:]) # [1,2,3] # 这里要说下对列表使用冒号形式截取值,结果还是一个列表
print(list[0][0]) # 1 对于截取列表不使用冒号截取,结果是原来在列表的类型(上边是数字int)

相加或相乘:(只能列表与列表相加)

list = [1,2,3]
list1 = [4,5]
print(list*2) # [1,2,3,1,2,3]
print(list+list1) # [1,2,3,4,5]

list方法:-----------------------------------------------------------------------------------

3、insert(index,ele)把元素插入到指定的位置

----------- index:插入到list中的哪个位置,是一个索引位。

----------- ele:需要插入的元素。

author = ["l","x","c"]
author.insert(1,'hehe')
print(author)  # ['l', 'he', 'x', 'c']

上边代码,我们在list中的第二个位置插入元素。

4、append( )向list末尾追加元素 (与js中数组方法push一样)

author = ["l","x","c"]
author.append('he')
print(author)  # ['l', 'x', 'c', 'he']

5、与append对应的是pop( )删除list末尾的元素(与js中数组方法pop()一样,只不过js中的pop没有指定删除)

author = ["l","x","c"]
author.pop()
print(author)  # ['l', 'x']

     (1)指定删除哪一个元素需要加上索引,pop( i )i 是索引位

author = ["l","x","c"]
author.pop(1)
print(author)  # ['l', 'c']

6、count(ele)返回元素在列表list中出现的次数(可用在list、tuple)

list = [1,2,1,1,2]
tuple = (1,2,1,1,)
print(list.count(1)) # 3
print(list.count(2)) # 2
print(tuple.count(1)) # 3

7、extend(data)与append类似,都是向列表list末尾插入元素,但是extend会把元祖、list拆分成单个元素然后依次向列表末尾添加

可用在list、str、tuple、set、dict)

#向列表添加列表
list1 = [1,2]
list1.extend([1,2,3])
print(list1) # [1, 2, 1, 2, 3]
——————————————————————————————————————————————————————————————————————————————————————————
#向列表添字符串
list2 = [1,2]
list2.extend("123")
print(list2) # [1, 2, '1', '2', '3']
——————————————————————————————————————————————————————————————————————————————————————————
#向列表添加tuple元组
list3 = [1,2]
list3.extend((1,2,))
print(list3) # [1, 2, 1, 2]
——————————————————————————————————————————————————————————————————————————————————————————
#向列表添加set集合
list4 = [1,2]
list4.extend(set([1,2,3]))
print(list4) # [1, 2, 1, 2, 3]
——————————————————————————————————————————————————————————————————————————————————————————
# 向列表添加字典
list5 = [1,2]
list5.extend({'name':'lxc','age':20})
print(list5) # [1,2,'name','age']

8、index(ele)返回ele在列表list中第一次出现的索引位(可用在list、tuple)

# list 列表
list = [1,1,2,3,1]
print(list.index(1)) # 0
# 元组 tuple
list = (1,2,3,1,1)
print(list.index(1)) # 0

9、remove( ele ) 指定删除在list中首次出现的元素(与pop(ele)一样都是指定删除list中的某个元素,但是pop(ele)返回值是删除的那个元素,而remove(ele)返回None)

list = [1,1,2,3,1]
list.remove(1)
print(list) # [1,2,3,1]
print(list.remove(1)) # None

10、sort( )将list中的元素升序排列

list = [1,1,2,3,1]
list.sort()
print(list) # [1, 1, 1, 2, 3]

11、reverse( ) 列表反转

list = [1,2,3]
list.reverse()
print(list) # [3,2,1]

12、list里边的数据类型也可以不同,还可以嵌套list(在js中叫的二维数组!)

author = ["l",True,20,[1,"lxc"]]
print(len(author))  # 4
print(author[3][0]) # 1

13、list里边的元素可以替换

author = ["l",True,20]
author[1] = False
print(author)  # ['l', False, 20]

14、空list

如果一个list为空,一个元素都没有,则长度为0

author = []
print(len(author)) # 0

 

16、clear()清空列表

a = [1,2,3]
a.clear()
print(a) # []

 

tuple

tuple是一种有序的列表,称:元组 ( )

tuplelist十分相似,但是tuple一旦初始化就不能更改:

 

创建元组:(目前想到有两种方法,第二种方法经常会用到)

其实第二种方法不叫创建元组,更确切的说是把其他数据转化为元祖 !!! 

#方法一
t = (1,2,2)

#方法二
t = tuple(range(10)) #(0,1,2,3,4,5,6,7,8,9)
t = tuple([1,2,3]) #(1,2,3)

d = {'name':'lxc','age':20}
print(tuple(d)) # ('name','age')

s = set([1,2,3])
print(tuple(s)) # (1,2,3)

st = '123'
print(tuple(st)) # ('1','2','3')

 

特点:

1、创建之后不可更改;

2、有不同元素组成,可以储存不同类型的元素,如字符串、数字、元组;

3、可作为dict中的key来使用。

author = ("l","x","c")

上边代码,一旦初始化,就不可以更改,tuple中没有insert和append()方法。其他的获取元素的方法与list一样。

对temple的取值,相乘,相加(相加只能元组和元祖相加)

tuple = (1,2,3)
tuple1 = (4,5)

print(tuple) # (1,2,3) 打印tuple
print(tuple[0]) # 1  取tuple第一个元素
print(type(tuple[0])) # int
print((tuple[0:])) # (1,2,3) 从0截取到最后
print(tuple[0:len(tuple)]) # (1,2,3)  从0截取到最后
print(tuple*2) # (1,2,3,1,2,3)  # 两个tuple相乘 
print(tuple + tuple1) # (1,2,3,4,5) # 两个不同temple相加

不可变的tuple的意义是:

代码更安全,能用tuple代替list就尽量用tuple。

 

in 判断元素是否在元组中:

num = 1
temple = (1,2,3)
print(num in temple) # True
print(num not in temple) # False

 

tuple的陷阱

(1)当你定义一个tuple时,在定义的时候,tuple里边的元素必须被确定下来:

name = (1,2)
print(name) # (1,2)

(2)也可以定义空元组

name = ( )

(3)以下写法是错误的,因为定义的不是tuple,而是1这个数,python中规定,这种情况,按照小括号进行计算,计算结果自然是1。如果非要定义一个1,则需要加上逗号 " , "来消除奇异!!!

name = (1)
print(name) # 1

num = (1,)
print(num) #(1,)

(4)tuple元组中也可以嵌套list,这时,list中的元素是可变化的

author = ('a','b',["lxc",20])
author[2][1] = 22
print(author) # ('a', 'b', ['lxc', 22])

上边代码,tuple元组中定义了三个元素,a   b  和一个list,表面看上去是tuple元素变了,但其实变的是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每一个元素,的指向是永远不变。即:指向‘a’,就不能指向 ‘b’,指向一个list就不能改成指向其他的对象,但是list本身 是可变的。。。

再来看一个例子:

temple = (1,2,3)
temple[1] = 0
print(temple) #TypeError: 'tuple' object does not support item assignment

上边代码,我们把元组中索引为1的元素改变了,这里会报错,因为元组元素本身改变了!!!

 

这里我在举一个JavaScript中对象的例子:

let obj1 = {
	name:"lxc",
	age:20
}
let obj2 = obj1;
obj2.name = "xc";
console.log(obj1) //{name: "xc", age: 20}

上边js代码中,变量obj1和obj2都是对象的引用,也就是说在内存中有两个指针(obj1、obj2)同时指向了同一个地址,不管是谁修改了里边的属性值,值会发生改变,但是,指针指向的地址是没有发生改变的!在JavaScript中叫作引用值。上边tuple类似于js中的引用值,虽然外界修改了list中的元素,但是tuple的指向一直没有发生改变!!!

总结下,list和tuple都是python中内置的有序集合,他们都是符合组的概念,一个可变,一个不可改变,在项目中的应用,以后我会更新。。。

 

补充:

长度、最大值、最小值:

Python提供了内置的len()、max()、min()全局函数来获取列表、元组、字符串的长度、最大值、最小值。(列表和元组中的元素必须:相同类型且可以比较大小!!!)

使用 max min 对元组或者列表求最大值时,里边的元素必须是数字类型!!!

str = '123abc456'
temple = (1,2,3)
list = [1,2,3]
print(max(str)) # c
print(max(temple)) # 3
print(min(list)) # 1

上边代码,字符串比较的是Ascii码。。。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值