python列表相关知识及部分列表相关习题

python列表相关

1.列表.append(元素) - 在列表最后添加指定元素
2.列表.insert(下标,元素) - 在列表的指定下标对应的元素插入指定元素

示例:

nums = [10, 20]
nums.append(100)
print(nums)		# [10,20,100]
nums.insert(0, 100)
print(nums)		# [100,10,20,100]
删除

1.del 列表[下标] - 删除列表中指定下标对应的元素
2.列表.remove(元素) - 删除列表中指定元素
3.列表.pop() - 取出列表中最后一个元素
列表.pop(下标) - 取出列表中指定下标的元素

nums = [10, 20, 20]
del nums[1]
print(nums)		# [10, 20]
nums.remove(20)
print(nums)		# [10]
# 删除scores中所有低于60分的元素
scores = [98, 79, 45, 55, 72, 64, 82, 90, 23, 45, 59]
i = 0
while i < len(scores):
    if scores[i] < 60:
        del scores[i]
    else:
        i += 1
print(scores)	# [98, 79, 72, 64, 82, 90]

列表[下标] = 新值 - 将列表中指定下标对应的元素修改成指定的值

示例:

games = ['诛仙', '英雄联盟', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生']
games[1] = '213'
print(games)	
#['诛仙', '213', '王者荣耀', '开心消消乐', '炉石传说', '部落冲突', '原神', '绝地求生']
in 和 not in

元素 in 列表 - 判断列表中是否存在指定元素,如果存在就返回True,否则返回False

示例:

print(10 in [10, 20, 30]) # True
print([10, 20] in [10, 20, 30])	# False
print([10, 20] in [[10, 20], 20])	# True

去重:
示例:

# 方法1:
names = ['张三', '李四', '张三', '王五', '李四']
new_names = []
for i in range(len(names)):
    if names[i] not in new_names:
        new_names.append(names[i])
print(new_names)

# 方法2:
for _ in range(len(names)):
    x = names.pop()
    if x not in names:
        names.insert(0, x)

print(names)

列表相关运算

1.数学运算符:+、*

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

示例:

list1 = [10, 20, 30]
list2 = [100, 200]
result = list1 + list2
print(list1, list2, result) #[10,20,30] [100,200] [10,20,30,100,200]
列表 * N 、 N * 列表

​```python
list2 = [1]
print(list2 * 2) # [1,1]


####  2.比较运算符 :==、!=

示例:

```python
print([10, 20, 30] == [10, 20, 30])	#True
print([10, 20, 30] == [30, 20, 10])	#False
# 列表可以和其他类型的数据比较是否相等
print([10, 20] == '10,20')	# False

# 比较大小 - 两个列表可以比较大小(跟长度无关)比较第一对不同的元素的大小
# 两个列表比较大小,比较第一对不想等元素的大小(相同位置上的元素属于一对)
print([100, 200, 300, 400] > [101, 201])	# False
print([1, 2, 3000] > [1, 3, -12321])		# False
# 比较的必须是相同类型的元素

列表相关函数

sum、max、min、sorted、len、list
sum

sum(序列) - 求序列中所有元素的和

示例:

scores = [19, 23, 89, 90, 99, 83]
print(sum(scores))		#403

print(sum(range(1, 101)))	# 5050
max min

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

示例:

scores = [19, 23, 89, 90, 99, 83]
print(max(scores))	# 99
print(min(scores))	# 19
sorted

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

示例:

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]

len

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

示例:

a = [1, 2, 3, 4]
print(len(a))	# 4
list

list(序列) - 将指定的序列转换成列表,将序列中的元素作为列表的元素(所有的序列都可以转换成列表)

示例:

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

list2 = list(range(3))
print(list2)	# [0, 1, 2]

列表推导式 - 一种创建列表的表达式

结构1:
[表达式 for 变量 in 序列]

功能:创建一个列表,列表中的元素是表达式的结果 - 让变量去序列中取值,一个一个的取,每取一个值就计算一次表达式的结果
应用:将原序列中所有的元素,经过统一的变换,转换成新的列表
结构2:
[表达式 for 变量 in 序列 if 条件语句]
功能:创建一个列表,列表中的元素是表达式的结构 - 让变量取序列中取值,一个一个的取,去一个值就判断一次条件语句是否为True为True就计算表达式的结果
应用:提取序列中满足某个条件的所有元素

示例:

list1 = [10 for x in 'abc']
print(list1)  # [10, 10, 10]

list2 = [x for x in range(3)]
print(list2)  # [0, 1, 2]

list3 = [x * 2 for x in range(3)]
print(list3)  # [0, 2, 4]

list4 = [x % 2 == 0 for x in range(5)]
print(list4)  # [True, False, True, False, True]

# 练习1:提取nums中所有元素的个位数
nums = [23, 78, 562, 98, 71, 99]
# [3, 8, 2, 8, 1, 9]
nums1 = [x % 10 for x in nums]
print(nums1)  # [3, 8, 2, 8, 1, 9]

# 练习2:将nums中所有的元素都乘以10
nums = [23, 78, 562, 98, 71, 99]
# [230, 780, 5620, 980, 710, 990]
nums2 = [x * 10 for x in nums]
print(nums2)  # [230, 780, 5620, 980, 710, 990]

print('-----------------------------------------------')

list1 = [x for x in range(5) if x % 2 == 0]
print(list1)  # [0, 2, 4]

nums = [23, 89, 67, 21, 78, 20]
list1 = [x for x in nums if x % 10 < 5]
print(list1)  # [23, 21, 20]

# 练习:用推导式删除scores中小于60的元素
scores = [30, 56, 78, 91, 83, 88, 45, 57, 60]
list1 = [x for x in scores if x >= 60]
print(list1)  # [78, 91, 83, 88, 60]
三目运算符

C的三目运算符 - ?:
条件语句?值1:值2 - 如果条件语句为真,整个表达式的结果是值1,否则结果是值2
python的三目运算符 - if-else
值1 if 条件语句 else 值2 - 如果条件语句为真,整个表达式的结果是值1,否则结果是值2

示例:

# 练习:将scores中元素全部变成'及格'或者'不及格'
scores = [30, 56, 78, 91, 45, 57, 60]
new_scores = ['及格' if x >= 60 else '不及格' for x in scores]
print(new_scores)  # ['不及格', '不及格', '及格', '及格', '不及格', '不及格', '及格']

1.已知一个数字列表,求列表中心元素。

nums = [0,1,2,3,4,5]
a = len(nums)
if a % 2 == 1:
    print(nums[a // 2])
else:
    print(nums[a // 2])
    print(nums[a // 2 -1])

2.已知一个数字列表,求所有元素和。

nums = [1, 2, 3, 4, 5]
print(sum(nums))

3.已知一个数字列表,输出所有奇数下标元素。

nums = [1, 2, 3, 4, 5]
for i in range(1,5,2):
    print(nums[i])

4.已知一个数字列表,输出所有元素中,值为奇数的元素。

nums = [1, 2, 3, 4, 5]
s = 0
for i in range(1,5):
    if nums[i] % 2:
        s += nums[i]
print(s)

5.已知一个数字列表,将所有元素乘二。

例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]

nums = [1, 2, 3, 4]

for i in range(0,4):
    nums[i] = nums[i] * 2
print(nums)

6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的

例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]

names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
for _ in range(len(names)):
    x = names.pop()
    if x not in names:
        names.insert(0,x)
print(names)

7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)

point = [95, 96, 98, 94, 92]
i = max(point)
j = min(point)
point.remove(i)
point.remove(j)
s = sum(point) / len(point)
print(s)

8.有两个列表A和B,使用列表C来获取两个列表中公共的元素

例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]

A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]
C = []

for i in A:
    for j in B:
        if i == j:
            C.append(i)
print(C)

9.*有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)

例如: nums = [19, 89, 90, 600, 1] —> 600

nums = [19, 89, 90, 600, 1]
c = 0
for i in range(len(nums) - 1):
    if nums[i] - nums[i + 1] > 0:
        c = nums[i]
    else:
        c = nums[i + 1]
print(c)

10.*获取列表中出现次数最多的元素

例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3

nums = [1, 2, 3, 1, 4, 2, 1, 3, 7, 3, 3]
lists = []
for i in nums:
    a = nums.count(i)
    lists.append(a)
a = max(lists)
print(nums[lists.index(a)])

  1. 创建一个列表,列表中有10个数字, 保证列表中元素的顺序,对列表进行排重,并对列表使用进行降序排序
例如:[70, 88, 91, 70, 107, 234, 91, 177, 282, 197]
		--- 去重之后 [70, 88, 91, 107, 234, 177, 282, 197]
  	---- 降序排序 [282, 234, 197, 177, 107, 91, 88, 70]
nums = [70, 88, 91, 70, 107, 234, 91, 177, 282, 197]
for i in nums:
    x = nums.pop()
    if x not in nums:
        nums.insert(0, x)
print(nums)
nums.sort(reverse=True)
print(nums)

  1. 利用列表推导式, 完成以下需求

a. 生成一个存放1-100中各位数为3的数据列表

结果为 [3, 13, 23, 33, 43, 53, 63, 73, 83, 93]
nums = [x for x in range(1,100) if x % 10 == 3]
print(nums)

b. 利用列表推到是将 列表中的整数提取出来

例如:[True, 17, "hello", "bye", 98, 34, 21] --- [17, 98, 34, 21]
a = [True, 17, "hello", "bye", 98, 34, 21]
b = [x for x in a if type(x) == int]
print(b)

c.利用列表推导式 存放指定列表中字符串的长度

例如: ["good", "nice", "see you", "bye"] --- [4, 4, 7, 3]
a = ["good", "nice", "see you", "bye"]
b = [len(i) for i in a]
print(b)

d. 利用列表推导式删除列表中整数个位数小于5的元素

例如:[24, 'abc', 99, True, 21, 38, 'hello'] --- ['abc', 99, True, 38, 'hello']
a = [24, 'abc', 99, True, 21, 38, 'hello']
b = [i for i in a if type(i) != int or i % 10 >= 5]
print(b)

e. 利用列表推导式获取元素是元组的列表中每个元组的最后一个元素

例如:[(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]  --- [30, 'hello', 3.4, False]
a = [(10, 20, 30), ('abc', 'hello'), (1, 2, 3.4), (True, False)]
b = [i[len(i) - 1] for i in a]
print(b)

f.利用列表推导式将数字列表中所有的奇数乘以2,所有的偶数除以2

例如: [23, 4, 67, 88, 90, 21]  -> [46, 2, 134, 44, 45, 42]
a = [23, 4, 67, 88, 90, 21]
b = [i * 2 if i % 2 == 1 else i / 2 for i in a]
print(b)
  1. 已知一个列表获取列表中指定元素所有的下标

    例如:[10, 20, 34, 10, 9, 78]
    10的下标:[0, 3]
    20的下标:[1]
    30的下标:[]
    x = int(input('请输入要获取列表中的一个数:'))
    a = [10, 20, 34, 10, 9, 78]
    b = [i for i in range(0,len(a)) if a[i] == x]
    print(x,'的下标:',b,sep='')
    
  2. *已知一个数字列表,写程序判断这个列表时候是连续递增列表。

    例如:
    [1, 2, 3, 4, 5]   -> True
    [23, 45, 78, 90]  -> True
    [1, 3, 2, 4, 5]	-> False
    a = [1, 2, 3, 4, 5]
    b = sorted(a)
    print(a == b)
    
  3. 已知两个列表,将两个列表按照下面的规律交叉合并

    A = [10, 20, 30, 40, 50]
    B = [100, 200, 300]
    结果:[10, 100, 20, 200, 30, 300, 40, 50]
    A = [10, 20, 30, 40, 50]
    B = [100, 200, 300]
    for i in B:
        for j in range(1,6,2):
            if B == []:
                break
            x = B.pop(0)
            A.insert(j,x)
            continue
    print(A)
    
    
  4. 已知两个有序列表,将两个列表合并,合并后的新列表中元素仍然是递增列表

    A = [10, 20, 30, 40, 50]
    B = [25, 44, 60]
    结果:[10, 20, 25, 30, 40, 45, 50, 60
    A = [10, 20, 30, 40, 50]
    B = [25, 44, 60]
    C = A + B
    C.sort()
    print(C)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值