python列表与元祖

列表的相关操作

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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容

  • 一.recode 1.变量 变量名 = 值 变量存的是地址 2.运算符: 3.字符串 字符获取字符运算相关方法 4...
    熙包包阅读 327评论 0 0
  • 1.列表的数学运算:+ , *列表1 + 列表3 ---将两个列表中的元素合并产生一个新的列表(不会修改原列表)p...
    HuangXiongjin阅读 141评论 0 0
  • 一、元祖 1.什么是元祖元祖就是不可变的列表,列表中除了可变的操作其他的操作都适用于元祖元祖值:a.使用()将元素...
    liuperson阅读 261评论 0 6
  • 01.recode 1.变量变量名 = 值 变量存的是地址 2.运算符: 3.字符串字符获取字符运算相关方法 4....
    Gary134阅读 264评论 0 0
  • 2019年1月12日 阴天 星期六 周六我很忙碌,早上听好早课,准备大宝的早餐,她要赶公交上...
    雪中蝶梦阅读 223评论 0 1