day-6 总结

一.列表相关操作

1.数学运算符: + *

print([10,20]+[20,30])  #[10,20,20,30],原变量不会变

list1 = [10,20,30]

print(list1 * 2)

print(list1 * 3)

list1.reverse()

print(list1)

2.比较运算符

2.1.比较是否相等: == , !=

print([10,20,30] == [10,20,30])

print([10,20,30] != [10,30,20])

2.2 也可以和其他数据类型比较是否相等

print([10, 20] == '10,20')  #False

print([10] == '10')          #False

print([10] == 10)           #False

2.3比较相等  #比较的的是第一队不相等的元素的大小

print([100,200,300,400] > [101,201])

print([1,2,30000,4000] < [1,3,-23445])

# 如果有字符串比较大小会报错

print(['psd'] < ['qwer'])    # True 跟第一个字母的顺序有关

3. in 和 not in

元素 in 列表           -是否存在元素

元素 not in 列表

print(10 in [10,20,30])          # TRUE

print([10,20] in [10,20,30])      # FALSE

练习题:去重

自己解法: (这个解法的出错很容易在list的范围上面)

j = 0

names = ['张三','李四','张三','王五','李四','张三','张三','张三','王五']

for i in range(len(names)-1):

    print(i)

    j = i + 1

    while j <= (len(names)-1):

        if names[i] == names[j]:

            del names[j]

        else:

            j += 1

print('weise',names)

解法1: (此解法是用添加空列表,判断后用append函数加入)

newnames = []

for x in names:

    if x not in newnames:

        newnames.append(x)

print(newnames)

解法二: (此解法是用pop能够删除并返回值所以,把原列表删除完,再把筛选的在Insert函数进去)

names = ['张三','李四','张三','王五','李四','张三']

for _ in range(len(names)):

    last_name = names.pop()

    if last_name not in names:

        names.insert(0,last_name)

print(names)

二.列表相关函数

1. sum(序列)  - 求数字序列中所有元素的和

scores =[19, 23, 89 , 90, 99 ,83]

print(sum(scores))

print(sum(range(1,101)))

2.

 max(序列)   -  求序列中最大的元素

 min(序列)   -   求序列中最小的元素

print(max(scores))

print(min(scores))

3.

sorted(序列)   -   将序列中的元素从小到大排序,产生一个新的列表

sorted(序列,reverse = True)   -从大到小,产生一个新的序列

scores =[19, 23, 89 , 90, 99 ,83]

new_scores = sorted(scores)

print(new_scores)              #[19, 23, 83, 89, 90, 99]

new_scores = sorted(scores, reverse=True)

print(new_scores)          #[99, 90, 89, 83, 23, 19]

4. len(序列)   -  获取序列中元素的个数

5. list(序列)   -   将指定的序列转换成列表,将序列中的元素最为列表的元素

-    所有元素都可以转换成列表

list1 = list('abc123')

print(list1)        #['a', 'b', 'c', '1', '2', '3']

list2 =list(range(3))

print(list2)       #[0, 1, 2]

三.列表相关方法

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

numbers= [1,2,3,4]

numbers.clear()

print(numbers)               #[]

2. 列表.copy()  -  复制原列表,产生一个一模一样的新列表

              -  注意地址问题,copy后地址与原函数地址不一样

nums = [1,0,111,123]

new_nums1 = nums.copy()

new_nums2 = nums

print('new_nums', new_nums1)

nums.append(100)

print(new_nums2, new_nums1)

3.  列表.count -统计指定元素的个数

print(nums.count(1))      

4. 列表.extend(序列)    -  序列中的元素全部添加到列表的最后

nums = [1,2,3,4]

nums.extend(['abc',111])

print(nums)      #[1, 2, 3, 4, 'abc', 111]

nums = [1,2,3,4]

nums.extend('abc')

print(nums)     #[1, 2, 3, 4, 'a', 'b', 'c']

5 . 列表.index[元素]     - 获取指定元素列表中的下标值(标志的下标值,从0开始的那个下标)

army = [3,3,3,8,9,10,11,12,13,15,3]

print(army.index(3))         # 0

print(army.index(13))         # 8

# 不是里面的元素会报错

6. 列表.reverse() - 将列表中的元素逆序

army.reverse()

print(army)         #[3, 15, 13, 12, 11, 10, 9, 8, 3, 3, 3]

print(army[ : :-1])    #[3, 3, 3, 8, 9, 10, 11, 12, 13, 15, 3],不会修改原列表的值

7 .

列表.sort()         -    从小到大

列表.sort(reverse=True)   - 从大到小

sorted(序列)                #不会改变原来序列的值

sorted(序列,reverse=True)

army .sort()

print(army)        #[3, 3, 3, 3, 8, 9, 10, 11, 12, 13, 15]

print(sorted(army,reverse=True),army) #[15, 13, 12, 11, 10, 9, 8, 3, 3, 3, 3] [3, 3, 3, 3, 8, 9, 10, 11, 12, 13, 15]

四.列表推导式

1 . 列表推导式   -  一种创建列表的快捷表达式

结构1:

[表达式 for 变量 in 序列]

功能:  创建一个列表,列表中的元素是表达式的结果   -让变量取序列中取值,一个一个的取,每取一个值就计算依次表达式的结果

应用: 将原序列中所有的元素,经过统一的变换,转换成新的列表

例子:

list1 = [10 for x in 'abc']

print(list1)   #[10, 10, 10]

list1 = [x for x in range(3)]

print(list1)  #[0, 1, 2]

list2 = [x*2 for x in range(3)]

print(list2)   #[0, 2, 4]

list2 = [x % 2 == 0 for x in range(5)]

print(list2)   #[True, False, True, False, True]

练习::提取个位数并乘10

nums = [23,78,562,98,71,99]

list1 =[x%10 for x in nums[:]]         #[3, 8, 2, 8, 1, 9]

list2 = [x*10 for x in list1[:]]         #[30, 80, 20, 80, 10, 90]

print(list1,list2)

list3 = [x*10 for x in nums[:]]

print(list3)                 #[230, 780, 5620, 980, 710, 990]

money =[1215451,130000,67777,999988,453335]

newmoney = [f'{x/10000:.2f}万 ' for x in money]   #F' '  一种字符串写法

print(newmoney)

结构2:

[表达式 for 变量 in 序列 if 条件语句]

功能: 创建一个列表,列表中的元素是表达式的结果   -判断为True 才会判断结果

应用:提取序列中满足某个某个条件的所有元素

例子:

list1 = [x for x in range(5) if x% 2 ==0]

print(list1)          #[0, 2, 4]

nums = [23,89,67,21,78,20]

list2 = [x for x in nums if x %10 <5]

print(list2)         #[23, 21, 20]

#练习: 用推到删除scores小于60的元素

scores = [30,56,78,91,83,88,45,57,60]

newscores = [x for x in scores if x>=60]

print(newscores)   #[78, 91, 83, 88, 60]

# 练习: 将scores 中元素全部变成'及格'或者'不及格'

scores = [30,56,78,91,45,57,60]

scores1 = [' '] *len(scores)

j = 0

for i  in range(len(scores)):

    if  scores[i] >= 60:

        j = '及格'

        scores1[i] = j

    else:

        j ='不及格'

        scores1[i]= j

print(scores1)

# 法2:

newscores = ['及格' if x >= 60 else '不及格' for x in scores]

print(newscores)

补充:python的三目运算-  if - else

1)  值1 if 条件语句 else 值2 -如果条件为真,整个表达式结果值为1,否则结果是值2

# 例子:

age = 90

result = '成年' if age >= 18 else '未成年'

print(result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值