美文网首页
python列表与元祖

python列表与元祖

作者: 举颗凤梨 | 来源:发表于2019-07-29 19:28 被阅读0次

列表的相关操作

1.列表的数学运算:+ , *

  • 列表1 + 列表2 - 将两个列表中的元素合并产生一个新列表,不会修改原来的列表
  • 列表 * N 、 N * 列表 - N是正整数,相当于N个列表相加,产生一个新列表
    print([1,2,3]+[10,20,30])
    print([1,2,3] * 3)
    print(3 * [1,2,3])

2.列表的比较运算: == 、 != 、 < 、 >

  • 列表1 == 列表2 、 列表1 != 列表2
  • 列表大小的判断,是判断第一位的值谁大谁就大,如果相等就顺位比较下一位
  • 如果同位置的类型不同会报错

补充:is的用法

  • == 判断的是数据的值
  • is 判断两个数据的地址是否一样
list1 = [1,2,3]
list2 = [1,2,3]
print(list1 == list2, list1 is list2)  # list1 is list2 相当于: id(list1) == id(list2)

3. in 和 not in

  • 元素 in 列表 - 判断列表中是否存在指定的元素
  • 元素 not in 列表 - 判断列表中是否不存在指定的元素
    print(60 in [23,45,12,70]) # False
    print(12 in [23,45,12,70]) # True

4.内置函数:

max(序列) , min(序列) , sum(序列) , len(序列),list(序列) 所有的序列都可以用

  • max和min要求序列中类型必须一致;并且元素支持比较运算符(比较的是编码)
  • sum要求序列中的元素必须是数字
  • list(序列) - 只有容器型数据类型才能转换,(将序列中的元素转化为列表中的元素)
    print(list('abs')) # ['a', 'b', 's']
    print(list(range(5))) # [0, 1, 2, 3, 4]

1.列表.count(元素) - 统计列表中指定元素的个数

nums = [23, 45, 67, 89, 23, 46, 23, 21]
print(nums.count(23))  #统计23的个数  3
print(nums.count(1))   # 0

2,列表.extend(序列) - 将序列中的元素添加到列表的最后

nums = [1, 2, 3]
nums.extend([10,20])
nums.extend('ABC')
print(nums)  #[1, 2, 3, 10, 20, 'A', 'B', 'C']

3.列表.index(元素) - 获取元素在列表中的下标(如果元素有多个,只取第一个;元素不存在会报错)

  • print(nums.index(2)) # 1
  • print(nums.index(100)) # 元素不存在会报错

4.列表.reverse() - 让列表倒序,不会产生新列表

  • 列表[::-1] 会产生新列表,不会改变原列表
    nums.reverse()

5.排序

  • 列表.sort() - 将列表中的元素从小到大排序
  • 列表.sort(reverse = True) - 将列表中的元素从大到小排序
  • 注意:列表中的元素类型必须一样,并且元素支持比较运算符;不会产生新的列表
    nums = [12,4,56,74,2,34,12,39]
    nums.sort()
    print(nums)
    nums.sort(reverse= True)
    print(nums)
    nums.sort(key=lambda num: num % 10) #按个位数排序
    print(nums)

内置函数:sorted

  • sorted(序列) - 对序列中的元素从小到大排序,产生一个新列表
  • sorted(序列,reverse = True) - 对序列中的元素从大到小排序,产生一个新列表
num1 = sorted(nums)
print(num1)

6.清空列表:列表.clear()

nums.clear()
print(nums)

7.列表.copy() - 和列表[:]的效果一样,赋值列表中的元素产生新的列表,这的拷贝是浅拷贝

  • 列表的复制
num1 = [1,2,4,5]
num2 = num1.copy()
num3 = num1 * 1
num4 = num1[:]
num5 = num1 + []
print(num1 is num2,num1 is num3,num1 is num4,num1 is num5)

元祖

1.什么是元祖(turple)

元祖就是不可变的列表

1)

  • 元祖是容器型数据类型(序列),将()作为容器的标志,多个元素用逗号隔开(元素1,元素2,元素3,元素4)
  • 特点:不可变(不支持增删改),有序的(支持下标操作)

2)元祖中元素 - 和列表要求一样

1.元祖的表示

  • 空元祖存在但没有意义
1)单个元素的元祖(小括号可以省略): (元素,)或者元素,

tuple1 = (12,) # 必须加逗号,否则会视为一个整体
tuple2 = 12,

2)多个元素的元祖(小括号可以省略): (元素1,元素2...)或者元素1,元素2,...

tuple3 = (1, 2, 3, 4)
tuple4 = 1, 2, 3, 4

2.获取元祖中的元素

  • 列表中获取元素的方式元祖都支持
    weeks = '周一', '周二', '周三', '周四', '周五'
1) 获取单个元素

print(weeks[0], weeks[-1])

2)切片

print(weeks[1:3], weeks[:-1:2]) # 切片的结果是元祖

3)遍历

for week in weeks:
print(week)
for index in range(len(weeks)):
print(index, weeks[index])

4)获取部分元素:变量1,变量2,变量3,... = 元祖
  • 用变量去获取元祖中元素的值(要求:前面变量的个数和元祖中变量的个数一致)
tuple5 = (10,20)
x, y = tuple5  # 个数不一致会报错
print(x, y)
5)语法:多个变量某一个变量前带 = 元祖
  • 让不带的变量去元祖中获取元素,剩下的全部给带的变量
student = ('小米', 18, 'stu001', 23, 45, 78)
name, age, study_id, *scores = student
print(name, age, study_id, scores)  # 小米 18 stu001 [23, 45, 78]
*x, y, z = student
print(x, y, z)   # ['小米', 18, 'stu001', 23] 45 78

3.元祖相关操作:和列表一样

  • +, *, ==, !=, in, not in, max, min, sum, tuple, len,
sorted
print((1,2,3,4)*3)
print((1,2,3,4)+(5,6,7))
print(sorted((4,6,3,4,7,1)))

数字

  • python中数字相关的类型有int(整型)、float(浮点型)、bool(布尔)、complex(复数)

1.整型

  • 所有的整数对应的类型就是整型,python3.x中整型对应的数据类型只有int,python2.x除了int还有long
  • int(数据)
    • 将数据转换为整数.(可以转化的类型有:小数/布尔值/部分字符串)
    • 字符串中只有去掉引号后本身就是一个整数的字符串才能转换成整型
print(int(3.14),int(3.99))  # 3 3
print(int(True),int(False))  # 1 0
print(int('12'),int('-12'),int('+12'))   # 12 -12 12
print(int())  # 0

2.浮点型

  • 所有的小数对应的类型就是浮点型,浮点型对应的数据类型只有float。支持科学计数法:如3e4,1.25e2,
  • float(数据)
    • 整型、布尔和部分字符串可以转换成浮点型
    • 字符串中去掉引号本身就是一个数字的才能转换为浮点型
print(3e4)  # 30000.0
print(1.25e2)  # 125.0
print(float(100))  # 100.0
print(float(True),float(False))  # 1.0 0.0
print(9.9/3)
print(float('1.23'))    # 1.23

3.布尔

  • 布尔中的True本质就是整数1,Flase本质是整数0
  • bool(数据)
    • 所有python支持的数据类型都能转化为布尔;所有为0为空的值都是转换成False,其他的都是True
print(1+1, True+1, True*10, False+1)
print(bool(0), bool(0.0), bool(''), bool([]),bool(()))
# 判断列表是否为空,能不写==就不写
nums = []
if not nums:
    pass

4.复数

"""
由实部和虚部组成的数字叫复数:a+bj(a是实部、b是虚部、j是虚数单位),对应的类型是complex;python直接支持复数的运算
"""
print(10+20j,type(10+20j)) # 虚部不能省
num1 = 2+3j
num2 = 4-2j
print(num1+num2,num1*num2,num1/num2) # (6+1j) (14+8j) (0.1+0.8j)

math模块

  • math是标准库(python内置的模块),提供和数学运算相关的方法

math.方法名

import math
print(math.pi, math.e)

random模块

  • python内置了一个模块叫random,提供了与随机操作相关的方法

1)random.randint( M,N)

  • 产生M~N的整数(包括M和N)
    print(random.randint(0,10))

2)random.random()

  • 产生0 ~ 1的随机数(小数,0可以取到,1取不到)
    print(random.random())

3)random.randrange(M,N,step)

  • 产生序列range(M,N,step)中任意一个整数
    print(random.randrange(0,10,2))

4)random.choices(序列,k=N)

  • 在序列中随机获取N个元素,以列表的形式返回
    print(random.choices([1, 3, 6, 9, 13, 26]))
    print(random.choices('asdfgh', k=2))
    print(random.choices((1, 3, 6, 9, 13, 26), k = 3))

5)random.shuffle(列表)

  • 随机打乱列表顺序

nums = [1, 3, 6, 9, 13, 26]
names = ['小们','小溪','小镇','小红']
random.shuffle(nums)
random.shuffle(names)
print(nums,names)

相关文章

网友评论

      本文标题:python列表与元祖

      本文链接:https://www.haomeiwen.com/subject/pytirctx.html