07.列表相关运算符

07.Python列表相关运算符

1.数学运算符:+、*

列表1 + 列表2 - 将两个列表合并成一个新的列表

列表 * n - 列表中的元素重复N次,产生一个新的列表

2.比较运算符:<、>、<=、>=、==、!=

  1. 不同类型可以使用==和!=来比较,但不能用<、>、<=、>=来比较
print([10, 20, 30] == [10, 20, 30])  # True
print([10, 20, 30] == [10, 30, 20])  # False
2.<、>、<=、>=
#两个列表标大小,比较的是第一对不相等的元素比较

print([10, 200, 300] > [20, 1])  # False

3.max、min

# max(序列)   -   最大值
# min(序列)   -   最小值
nums = [1,23,43,5,6,23,65,76,32]
print(max(nums))
print(min(nums))

4.sum

# 2. sum   -   求序列中所有元素的和
nums = [1,23,43,5,6,23,65,76,32]
print(sum(nums))

5.sorted

# sorted(序列)   -     将序列中的元素从小到大排序,产生一个新的列表
# sortde(序列,reverse=True)   -   倒序,从大到小
nums = [1,23,43,5,6,23,65,76,32]
print(sorted(nums,reverse=True))   #[76, 65, 43, 32, 23, 23, 6, 5, 1]

6.len

len(序列) - 获取序列中元素的个数
list1 = [12,32,45,546,34,23]
print(len(list1))  # 6

7.list

# list(序列)    -    将序列的元素作为列表的元素创建一个新的列表
print(list(range(3)))   #[0, 1, 2]

8.列表.clear() - 清空列表

list1 = [1,2,3,4]
print(list1.clear())  # 清空列表

9.列表.copy - 复制,产生一个新列表 (浅拷贝)

# 列表[:]  、列表*1  、 列表+[](浅拷贝)
# 变量砸死保存数据的时候保存的其实是数据在内存保存的地址(Python中的变量全是指针变量),一个变量给另外一个变量赋值,赋值的是地址
list1 = [1,2,3,4,5,6]
list2 = list1   # 赋值
list3 = list1.copy()  # 拷贝

10. 列表.count(元素) - 统计元素在列表出现的个数 可以赋值

list4 = [1,2,3,4,5,6,1,2,3,2,4,5,2]
count1 = list4.count(2)
print(count1)

11. 列表.entend(序列) - 将序列中元素全部添加到列表中

list4 = [3,2,4,5,2]
list4.extend('qwe')    # 分开添加多个元素
print(list4)   #[3, 2, 4, 5, 2, 'q', 'w', 'e']

12. 列表.index(元素) - 获取元素在列表中的下标值(0开始的下标值)

# 多个元素 只获得第一个元素的下标
# 如果列表中没有该元素,会报错。??  is not in list
list4 = [3,2,4,5,2]
print(list4.index(2))  # 多个元素 只获得第一个元素的下标 1
#print(list4.index(20))  # ValueError: 20 is not in list

13. 列表.reveres() - 列表倒序

list4 = [3,2,4,5,2]
list4.reverse()
print(list4)

14. 列表.sort() / 原列表排序 只能对列表排序

list1 = [5,3,2,5,1,4,6,8]
list1.sort()
print(list1)   # [1, 2, 3, 4, 5, 5, 6, 8]

15.表推导式 - 快速创建列表的表达式

nums = [i**2 for i in range(30) if i % 3 == 0 ]
print(nums)   # [0, 9, 36, 81, 144, 225, 324, 441, 576, 729]


nums = [23,45,67,42,45,78,97,73,90]
print([i%10 for i in nums])  # [3, 5, 7, 2, 5, 8, 7, 3, 0]

print([i*10 for i in nums])    # [230, 450, 670, 420, 450, 780, 970, 730, 900]

print(['及格' if i >= 60 else '不及格' for i in nums])  # ['不及格', '不及格', '及格', '不及格', '不及格', '及格', '及格', '及格', '及格']


16.三目运算符

age = 18
result = '成年' if age >= 18 else '未成年'
print(result)

练习:

# 练习1:使用列表推导式提取nums中所有的奇数
nums = [23, 89, 90, 56, 41, 802]
print([i for i in nums if i % 2])

# 练习2:已知一个列表,提取列表中所有的字符串
list1 = [10, 23.9, 'hello', True, '12', 0]
print([i for i in list1 if type(i) == str])

# 练习3:已知一个列表,提取列表中所有的整数,并且将整数加3
# [13, 3]
list1 = [10, 23.9, 'hello', True, '12', 0]
print([i + 3 for i in list1 if type(i) == int])
张天乐 gold94182 C++ 面向对象 - 运算符重载与友元函数(实验) 实验总用时:00:00:07 nav 第1关:复数运算 100 学习内容 参考答案 记录 评论 任务描述 相关知识 运算符重载 运算符重载之外部函数 运算符重载之成员函数 编程要求 测试说明 任务描述 本关任务:设计一个复数类并实现复数的三种运算。 相关知识 所谓重载,就是赋予新的含义。函数重载可以让一个函数名有多种功能,在不同情况下进行不同的操作。运算符重载也是一个道理,同一个运算符可以有不同的功能。本关我们就一起来学习运算符重载的使用。 运算符重载 运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。 重载运算符声明方式如普通成员函数一样,只不过他的名字包含关键字 operator,以及紧跟其后的一个 C++ 预定义的操作符。格式如下: 函数类型 operator 运算符名称 (形参表列) { // 对运算符的重载处理 } 例如: class Test{ /* 类声明 */ }; Test operator+(Test t1,Test t2); // 重载 + 运算符,这个运算符要求两个操作数 并不是所有 C++ 中的运算符都可以支持重载,我们也不能创建一个新的运算符出来并且不能改变运算符操作对象的个数。有的运算符只能作为类成员函数被重载,而有的运算符则只能当作普通函数来使用: 不能被重载的运算符有:..* 、:: 、?: 、sizeof 只能作为类成员函数重载的运算符有:() 、[] 、-> 、= 运算符重载有两种方式: 使用外部函数进行运算符重载; 使用成员函数进行运算符重载。 运算符重载之外部函数 要调用运算符重载函数,有两种方法,一种是通过函数名调用,即operator+(t1,t2),另一种是在使用运算符的时候自动调用,这里介绍第二种。 就如同函数重载的最佳匹配规则,使用一个运算符时,会寻找名为operator<运算符>,且与当前操作数最佳匹配的那个重载版本进行调用。 例如: class Test{ /* 类声明 */ }; class D : public Test {}; //创建一个 Test 类的子类 //外部函数 Test operator+(Test t1,Test t2){ /* 一些操作 */ } int main() { Test t1,t2; Test t3 = t1 + t2; // 最佳匹配是 operator+(Test,Test) D d1,d2; D d3 = d1 + d2; // 最佳匹配也是 operator+(Test,Test) } 至于运算符重载函数内部怎么实现(定义),那就可以根据需求来了,例如: class Test { public: int a; }; Test operator+(Test &t1,Test &t2) { // 重载加法运算符,实际对 Test 类中的 a 成员变量进行加法运算 Test t; t.a = t1.a + t2.a; return t; } int main() { Test t1,t2; t1.a = 10; t2.a = 20; cout << (t1 + t2).a <<endl; // 调用 operator(Test&,Test&)的重载版本 } 输出结果为:30 注意:在运算符重载函数中也是要考虑类成员访问性的问题的。 运算符重载之成员函数 运算符重载的函数也可以写到某个类中成为一个成员函数,格式与写在外面没有区别,但在参数列表上有一些差异。 成为成员函数的运算符重载函数的参数需要少写一个最左边的参数,而少的这个参数就由当前的对象代替。 例如: class Test { public: int a; Test operator+(Test& t2); // 少了左边的一个参数 }; Test Test::operator+(Test &t2) { Test t; t.a = a + t2.a; // 当前对象代替了原本的第一个参数 return t; } int main() { Test t1,t2; t1.a = 10; t2.a = 20; cout << (t1 + t2).a << endl;
最新发布
11-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值