Python-面试题-列表(list)

"""
3.1 反转(判断对称)

如何判断一个数组是对称数组:
要求:判断数组元素是否对称。例如[1,2,0,2,1],[1,2,3,3,2,1]这样的都是对称数组
用Python代码判断,是对称数组打印True,不是打印False,如:
x = [1, "a",  0, "2", 0, "a", 1]
"""
def my_func(x):
    if x==x[::-1]:
        print(True)
    else:
        print(False)

my_func(x = [1, 'a',  0, '2', 0, 'a', 1])

x = [1, 'a',  0, '2', 0, 'a', 1]
print(x == x[::-1])     #切片

x = [1, 'a',  0, '2', 0, 'a', 1]
print(list(reversed(x)))      #反转
print(x == list(reversed(x)))

""" 3.2列表切片 如果有一个列表a=[1,3,5,7,11] 问题:1如何让它反转成[11,7,5,3,1] 2.取到奇数位值的数字,如[1,5,11] """ a=[1,3,5,7,11] b = list(reversed(a)) print(b) #[11, 7, 5, 3, 1] print(a[::2]) #[1, 5, 11]


""" 3.3列表大小排序 问题:对列表a 中的数字从小到大排序 a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8] """ a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8] print(sorted(a)) #[1, 1, 6, 6, 7, 8, 8, 8, 8, 9, 11]


""" 3.4 取出最大值最小值 L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88] 找出列表中最大值和最小值 """ L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88] print(sorted(L1)[-1]) print(max(L1))

""" 3.5 找出列表中单词最长的一个 a = ["hello", "world", "vivi", "congratulations"] 找出列表中单词最长的一个 """ a = ["hello", "world", "vivi", "congratulations"] print(max(a,key=lambda x:len(x)))

""" 3.6 切片取出列表中最大的三个数 取出列表中最大的三个值 L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88] """ L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88] print(sorted(L1)[-3:]) print(sorted(L1,reverse=True)[:3])

""" 3.7列表按绝对值排序 a = [1, -6, 2, -5, 9, 4, 20, -3] 按列表中的数字绝对值从小到大排序 """ a = [1, -6, 2, -5, 9, 4, 20, -3] print(a.sort(key=lambda x:abs(x))) print(sorted(a,key=lambda x:abs(x)))

""" 3.8按字符串长度排序 b = ["hello", "helloworld", "he", "hao", "good"] 按list里面单词长度倒叙 """ b = ["hello", "helloworld", "he", "hao", "good"] print(sorted(b,key=lambda x:max(x),reverse=True))

""" 3.9去重与排序 L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88] 如何用一行代码得出[1, 2, 3, 5, 11, 33, 88] L2 = [1, 2, 3, 4, 5] ,L[10:]结果是多少(报错?还是None,还是[]) """ L1 = [1, 2, 3, 11, 2, 5, 3, 2, 5, 33, 88] print(list(dict.fromkeys(L1))) L2 = [1, 2, 3, 4, 5] print(L2[10:]) #[]越界


""" 3.10 去重保留顺序 将列表中的重复值取出(仅保留第一个),要求保留原始列表顺序 如a=[3, 2, 1, 4, 2, 6, 1] 输出[3, 2, 1, 4, 6] """ #方法一: a=[3, 2, 1, 4, 2, 6, 1] print(sorted(set(a),key=lambda x: a.index(x))) #[3, 2, 1, 4, 6] #方法二: b = [] for i in a: if i not in b: b.append(i) print(b)


""" 3.11 列表合并 a = [1, 3, 5, 7] b = ['a', 'b', 'c', 'd'] 如何得到[1, 3, 5, 7, 'a', 'b', 'c', 'd'] """ a = [1, 3, 5, 7] b = ['a', 'b', 'c', 'd'] print(a.extend(b)) print(a)


""" 3.12 生成列表(列表推导式) 用一行代码生成一个包含 1-10 之间所有偶数的列表 """ print([j for j in range(1,11) if j%2==0])


""" 3.13 列表成员的平方 列表a = [1,2,3,4,5], 计算列表成员的平方数,得到[1,4,9,16,25] """ a = [1,2,3,4,5] print([j**2 for j in a])


""" 3.14 找出列表大于0的数 使用列表推导式,将列表中a = [1, 3, -3, 4, -2, 8, -7, 6] 找出大于0的数,重新生成一个新的列表 """ a = [1, 3, -3, 4, -2, 8, -7, 6] print([j for j in a if j >0])


""" 3.15统计列表有多少大于0 统计在一个队列中的数字,有多少个正数,多少个负数,如[1, 3, 5, 7, 0, -1, -9, -4, -5, 8] """ a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8] print(len([j for j in a if j>0])) print(len([j for j in a if j<0]))


""" 3.16列表排除筛选 a = ["张三","张四","张五","王二"] 如何删除姓张的 """ a = ["张三","张四","张五","王二"] #方法一 b = [] for i in a : if not i.startswith(""): b.append(i) print(b) #方法二 print([j for j in a if not j.startswith("")])


""" 3.18过滤列表中不及格学生(filter) 过滤掉列表中不及格的学生 """ a = [ {"name": "张三", "score": 66}, {"name": "李四", "score": 88}, {"name": "王五", "score": 90}, {"name": "陈六", "score": 56}, ] def my_func(x): return x.get("score") >= 60 print(list(filter(my_func,a)))


""" 3.19找出列表中最大数出现的位置 有个列表 a = [1, 2, 3, 11, 2, 5, 88, 3, 2, 5, 33] 找出列表中最大的数,出现的位置,下标从0开始 """ a = [1, 2, 3, 11, 2, 5, 88, 3, 2, 5, 33] print(a.index(max(a),0))


""" a = [ 'my', 'skills', 'are', 'poor', 'I', 'am', 'poor', 'I', 'need', 'skills', 'more', 'my', 'ability', 'are', 'so', 'poor' ] 找出列表中出现次数最多的元素 """ a = [ 'my', 'skills', 'are', 'poor', 'I', 'am', 'poor', 'I', 'need', 'skills', 'more', 'my', 'ability', 'are', 'so', 'poor' ] print(max(a,key=lambda x:a.count(x)))


""" 3.21分别统计列表中每个成员出现的次数 a = [ 'my', 'skills', 'are', 'poor', 'I', 'am', 'poor', 'I', 'need', 'skills', 'more', 'my', 'ability', 'are', 'so', 'poor' ] """ a = [ 'my', 'skills', 'are', 'poor', 'I', 'am', 'poor', 'I', 'need', 'skills', 'more', 'my', 'ability', 'are', 'so', 'poor' ] from collections import Counter print(Counter(a)) print(dict(Counter(a)))


""" 3.22 列表查找元素位置 给定一个整数数组A及它的大小n,同时给定要查找的元素val, 请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。 若该元素出现多次请返回第一个找到的位置 如 A1=[1, "aa", 2, "bb", "val", 33] 或 A2 = [1, "aa", 2, "bb"] """ A1=[1, "aa", 2, "bb", "val", 33,"aa"] def my_func(j): if j in A1: print(A1.index(j,0)) #index默认返回元素第一个找到的位置 else: print("-1") my_func("bb")


""" 3.23列表查找两数之和 给定一个整数数组nums 和一个目标值target ,请你在该数组中找出和为目标值的那两个整数,并返回他 们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定nums=[2,7,11,15],target=9 因为nums[0] + nums[1] =2+7 = 9 所以返回[0, 1] """ nums=[2,7,11,15] target=9 for i in range(0,len(nums)): for j in range(i+1,len(nums)): if nums[i]+nums[j]==target: print([i,j])


""" 3.24二维数组取值(矩阵) 有 a = [["A", 1], ["B", 2]] ,如何取出 2 """ a = [["A", 1], ["B", 2]] print(a[1][1])

'''a = [[1,1],2,[1,1]],如何得到[1,1,2,1,1]'''
s = []
a = [[1, 1], 2, [1, 1]]
for i in a:
if isinstance(i,list):
s.extend(i)
else:
s.append(i)
print(s)



""" 3.25 二维数组拼接 a = [[1,2],[3,4],[5,6]] 如何一句代码得到 [1, 2, 3, 4, 5, 6] """ a = [[1,2],[3,4],[5,6]] s = [] for i in a: s += i print(s)


""" 3.26 列表转字符串 L = [1, 2, 3, 5, 6],如何得出 ‘12356’? """ L = [1, 2, 3, 5, 6] b = [str(i) for i in L] print(b) print(''.join(b))


""" 3.27 两个列表如何得到字典 a = ["a", "b", "c"] b = [1, 2, 3] 如何得到 {‘a’: 1, ‘b’: 2, ‘c’: 3} """ a = ["a", "b", "c"] b = [1, 2, 3] print(dict(zip(a,b)))

""" 3.28列表按age从小到大排序 如下列表 people = [ {"name":"yoyo", "age": 20}, {"name":"admin", "age": 28}, {"name":"zhangsan", "age": 25}, ] 按年龄age从小到大排序 """ people = [ {"name":"yoyo", "age": 20}, {"name":"admin", "age": 28}, {"name":"zhangsan", "age": 25}, ] print(sorted(people,key=lambda x:x["age"]))



""" 3.29列表插入元素 现有 nums=[2, 5, 7] ,如何在该数据最后插入一个数字 9 ,如何在2后面插入数字0 """ nums=[2, 5, 7] print(nums.append(9)) print(nums) print(nums.insert(0,0)) print(nums)


""" 3.30打乱列表顺序随机输出 有个列表a = [1, 2, 3, 4, 5, 6, 7, 8, 9] 如何打乱列表a的顺序,每次得到一个无序列表 """ import random a = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(random.shuffle(a)) print(a)

 作者:如有更好、更方便、更快捷的方法,请留言^*^

三十六般武艺,七十二般变化,修练出个人品牌并发出光芒
原文地址:https://www.cnblogs.com/deeptester-vv/p/14925532.html