Python 内置数据结构之二(元组)

2019-08-14  本文已影响0人  Alexander_Zz

一、元组 tuple

1.1 一个有序的元素组成的集合
1.2 使用小括号 () 表示
t1 = tuple()
t2 = ()
t3 = (1,)   # 不可写成 t3 = (1) 
t4 = (1,'a',range(1))
1.3 元组是 不可变 对象
t5 = (1,[2,3],(4,5))
t5[1] = 3
t5[1][0] = 3
t5[2][0] = 3
不可变示例 1 .png
不可变示例 2 .png

二、元组的定义 初始化

2.1 定义
t = tuple()   # 工厂方法
t = ()
t = tuple(range(1,7,2))   # iterable 可迭代对象
t = (2,4,6,3,4,2,)
t = (1,)   # 一个元素元组的定义,注意有个逗号
t = (1,)*5
t = (1,2,3) * 5
示例.png

三、元组元素的访问

3.1 支持索引(下标)
t1 = (range(5))
t1[2]
示例.png
t1 = (range(5))
t1[-1]
示例.png

四、元组查询

4.1 index(value,[start,[stop]])
4.2 count(value)
4.3 时间复杂度
4.4 len(tuple)

五、元组的其他操作

5.1 元组是只读的,所以 增、删、改 方法都没有

六、命名元组 namedtuple

6.1 namedtuple(typename,field_names,verbose=False,rename=False)
6.2 示例
from collections import namedtuple

Student = namedtuple('Student','name age')   # Student 为返回的类,括号中的 Student 为显示名称
tom = Student('tom',20)
jerry = Student('jerry',21)
示例.png

七、冒泡法

7.1 冒泡法
7.2 升序
7.3 降序
冒泡法图示.png
7.4 示例
nums = [1,9,8,5,6,7,4,3,2]
length = len(nums)

for i in range(length -1):
    for j in range(length -1 -i):
        if nums[j] > nums[j+1]:
            temp = nums[j]
            nums[j] = nums[j+1]
            nums[j+1] = temp

print (nums)
基础.png 优化.png
7.5 冒泡法总结

八、练习

8.1 依次接收用户输入的 3 个数,排序后打印
# 练习一
nums = []

for i in range(3):
    nums.append(int(input('No {} >>>'.format(i))))   # input('>>>')
    
targets = []

if nums[0] > nums[1]:
    if nums[1] > nums[2]:
        pass
    else:                                            # nums[2] >= nums[1]
        if nums[0] > nums[2]:
            nums = [nums[0],nums[2],nums[1]]
#             targets = [0,2,1]                      # 记录索引方式,两种方式任选其一
        else:                                        # nums[2] >= nums[0]
            nums = [nums[2],nums[0],nums[1]]               
else:                                                # nums[1] >= nums[0]
    if nums[0] > nums[2]:
        nums = [nums[1],nums[0],nums[2]]
    else:                                            # nums[2] >= nums[0]
        if nums[1] > nums[2]:
            nums = [nums[1],nums[2],nums[3]]
        else:                                        # nums[2] >= nums[1]
            nums = [nums[2],nums[1],nums[0]] 
print (nums)

# for index in targets:                              # 索引记录方式打印
#     print (nums[index])
练习一.png
# 练习二
# 不推荐实际生产中使用此方法,效率低下
nums = []

for i in range(3):
    nums.append(int(input('No {} >>>'.format(i))))
    
targets = []

# while nums:                       # 不推荐使用 for 循环,for j in range(len(nums)):
#     targets.append(max(nums))
#     nums.remove(max(nums))
# print (targets)

while True:
    val = max(nums)
    print (val)
    nums.remove(val)
    if len(nums) == 1:
        print (nums[0])
        break
练习二.png
# 练习三
nums = []

for i in range(3):
    nums.append(int(input('No {} >>>'.format(i))))

nums.sort()   # 如需倒序,nums.sort(reverse=True)
print (nums)
练习三.png
上一篇下一篇

猜你喜欢

热点阅读