python基本数据类型之列表和元组

一.列表(list)

列表是有序的可变的元素集合 。像字符串值用引号来标记字符串的起止一样,列表用左方括号开始,右方括号结束, 即[]。列表中的值也称为“表项”。

二、创建列表的方法

方法1:list_name = [element1, element2, element3, element4......]

比如:

list_1 = [1, 3.14, (), [], True, {"k1":"v1"}, 1+2j]
print("list_1的数据类型是:", type(list_1))     # list_1的数据类型是: <class 'list'>

 

方法2:使用list()函数创建列表

tuple1 = (1, 3.14, [], (), True)
print("tuple的数据类型是:", type(tuple1))     # tuple的数据类型是: <class 'tuple'>
list2 = list(tuple1)
print("list2的数据类型是:", type(list2))      # list2的数据类型是: <class 'list'>

list中的元素可以是整型,浮点型,元组,列表,布尔值,复数, 字典等。

三、列表中常用的方法

根据列表的概念,它是一个可变有序的元素集合,那么它拥有增删改查的操作。

1、index索引

索引也可归结到查中

# index索引,和字符串的索引一样list_name[index]
list2 = [8, 3.14, [], (), True, {"k1":"v1"}, 1+2j]
a = list2[5]
print(a)  # {'k1': 'v1'}

2.切片

切片也可以归结到查中

# 切片list_name[开始:结尾:[步长]]
b = list2[2:5]
print(b)           # [[], (), True]
c = list2[-5:-2]   
print(c)           # [[], (), True]

# 步长
list3 = list2[::2]    
print(list3)       # [8, [], True, (1+2j)] 

# 逆序
d = list2[5:2:-1]
print(d)           # [{'k1': 'v1'}, True, ()]
e = list2[-2:-5:-1]
print(e)           # [{'k1': 'v1'}, True, ()]

3.改

列表的修改,已经将原来的列表改变了

list2 = [8, 3.14, [], (), True, {"k1": "v1"}, 1+2j]
# 单个修改
list2[2] = "hello world!"
print(list2)      # [8, 3.14, 'hello world!', (), True, {'k1': 'v1'}, (1+2j)]

# 多个修改
list2[1:3] = ["hello world", "hello"] #
["hello world", "hello", [], (), True, {"k1": "v1"}, 1+2j]
 

 4.增

追加append

""" Append object to the end of the list. """
li = [1., 8, "hello world", 1+1j, [], (), {} ]
li.append("China")
print(li)         # [1.0, 8, 'hello world', (1+1j), [], (), {}, 'China']

批量追加 extend

""" Extend list by appending elements from the iterable. """
li.extend(["i", {1, 2, 44, 88}])
print(li)        # [1.0, 8, 'hello world', (1+1j), [], (), {}, 'China', 'i', {88, 1, 2, 44}]

定位增加insert

"""
    def insert(self, *args, **kwargs): # real signature unknown
        Insert object before index. 
"""
li.insert(4, "hello everybody!")
print(li)      # [1.0, 8, 'hello world', (1+1j), 'hello everybody!', [], (), {}, 'China', 'i', {88, 1, 2, 44}]

5. 查

index

"""
Return first index of value.

Raises ValueError if the value is not present.
"""

a = li.index(8) print(a) # 1 b = li.index("hello everybody!") print(b) # 4
c = li.index("hello girl") 
print(c) # ValueError: 'hello girl' is not in list


"""
列表的index方法,如果列表中有多个一样的元素,index方法是取出第一元素,如果我们想要取出后面的元素的下标
思路:可以先取出这个目标元素的第一个元素,然后index找出第一个元素的下标,然后从那里开始切片,切片之后找出目标元素的index
然后再两个下标相加
"""
lis = ["i", "hello world", [], (), "hello world", "welcome"]
first_hwd_index = lis.index("hello world")
print(lis[first_hwd_index]) # hello world
lis2 = lis[first_hwd_index:]
second_hwd_index = lis2.index("hello world")
second_hwd_index2 = first_hwd_index + second_hwd_index
print(lis[second_hwd_index2]) # hello world
 

count

""" Return number of occurrences of value. """
li = [1.0, 8, 8, 8,  'hello world', (1+1j), 'hello everybody!', [], (), {}, 'China', 'i', {88, 1, 2, 44}]
d = li.count(8)    
print(d)         # 3
e = li.count("hello world!")
print(e)         # 0


lis = ["i", "hello world", [], (), "hello world", "welcome"]
# 判断某个元素是否在这个列表中
coun = lis.count("x")
print(coun) # 0 0表示lis中没有"x"这个元素
print("x" in lis) # False 表示没有这个元素
# 判断lis是否是一个list
print(type(lis) is list) # True

 

6.删

单个删除 remove

"""
Remove first occurrence of value.

Raises ValueError if the value is not present.
"""
li.remove(8)
print(li)    # [1.0, 8, 8, 'hello world', (1+1j), 'hello everybody!', [], (), {}, 'China', 'i', {88, 1, 2, 44}]
li.append('hello world')
print(li)   #  # [1.0, 8, 8, 'hello world', (1+1j), 'hello everybody!', [], (), {}, 'China', 'i', {88, 1, 2, 44}, 'hello world']
li.remove('hello world')
print(li)   # [1.0, 8, 8, (1+1j), 'hello everybody!', [], (), {}, 'China', 'i', {88, 1, 2, 44}, 'hello world']
li.remove("hello girl")
print(li)   # ValueError: list.remove(x): x not in list

 

指定删除pop

"""
Remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
"""
print(li)   # [1.0, 8, 8, (1+1j), 'hello everybody!', [], (), {}, 'China', 'i', {88, 1, 2, 44}, 'hello world']
a = li.pop()
print(a)     # hello world
b = li.pop(8)
print(b)     # China
c = li.pop(88)
print(c)      # IndexError: pop index out of range

 

lis = [1, 2, 3, 4, 5]
del lis[2]
print(lis)     # [1, 2, 4, 5]

del lis
print(lis)     # NameError: name 'lis' is not defined  这个删除操作,将lis这个列表从内存中删除了

 

清空clear

""" Remove all items from list. """
li.clear()
print(li)    # []

 

7.排序

sort方法

list_1 = [2, 8, 3, 59, 10]
list_1.sort()
print(list_1)      # [2, 3, 8, 10, 59]

list_2 = [4, 57, 2, 85, 20, 33, 0]
list_2.sort(reverse=True)
print(list_2)     # [85, 57, 33, 20, 4, 2, 0]

 

reverse方法

这个方法是逆序,和list[::-1]一样的效果

list_3 = [23, 45, 13, 58, 29, 4]
list_3.reverse()
print(list_3)    # [4, 29, 58, 13, 45, 23]

 

四、元组

元组: 元组是有序的不可变的元素的集合,被称为只读列表。因为它是不可变的,所以我们通常将一些不可变的数据用元组来包装

a = ()
b = (1, 1., False)
c = 1, 1., False
d = (1,) # 如果只有一个元素必须带上一个逗号,如果是d=(1),那么d的数据类型是int
e = (1)
print("d的数据类型是:", type(d))   # d的数据类型是: <class 'tuple'>
print("e的数据类型是:", type(e))   # e的数据类型是: <class 'int'>

功能

index 和count方法
len()
包含in,和列表一样
因为元组是不可变的元素集合,那么它就没有索引和切片

posted @ 2019-12-14 21:30  zgzeng  阅读(511)  评论(0编辑  收藏  举报