Python基础总结-06(列表)

List

python中的容器类的数据类型,可以用来存储多个数据,其特点是可变和有序
可变--列表中的元素值和位置以及列表长度可变(列表可以增删改)
有序--可以通过下标获取元素
列表中的元素可以是任何类型的数据;列表同样可以切片
一、获取列表中的元素
可以通过下标或者切片的方式获取

num=[1,2,3,4,5,6,7]
a=num[0]
b=num[0:3]
c=num[::-1]
print(a,b,c)
#1 [1, 2, 3] [7, 6, 5, 4, 3, 2, 1]

二、列表的基本操作
(1)基本操作

a=len(num) #获取长度
b=[1,2,3]+[4,5,6] #列表连接
c=[1,2]*3 #列表重复
d= 3 in [1,2,3] #列表中的元素
print(a,b,c,d)
for x in num: print(x,end= ',') #迭代获取列表元素
#7 [1, 2, 3, 4, 5, 6] [1, 2, 1, 2, 1, 2] True
#1,2,3,4,5,6,7,

(2)列表比较
比较是否相等的两种方式,==和is
==判断的是值是否相等,is判断的是地址是否相等

list1=[1,2,3]
list2=[1,2,3]
list3=list1
print(list1==list2,list1==list3,list1 is list2 ,list1 is list3)
#True True False True
#list1和list2在内存开辟了两个空间分别存储,空间地址不同;list1和list3通过赋值的方式执行同一个地址

(3)列表赋值
用一个列表给另外一个列表赋值的时候,可能会因为修改一个列表的元素影响另一个列表,若不想互相影响可以切片或者复制创建一个新的副本

list1=[1,11,111]
list2=list1
list2.append(1111)
print(list1,list2)

list3=list1[:]
list3.pop()
print(list1,list3)
#[1, 11, 111, 1111] [1, 11, 111, 1111]
#[1, 11, 111, 1111] [1, 11, 111]

三、列表的方法
(1)列表的删除操作
[list.pop([index=-1])]
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

list01=['利物浦','切尔西','曼联','曼城','阿森纳','热刺']
a=list01.pop()
b=list01.pop(2)
print(a,b,list01)
#热刺 曼联 ['利物浦', '切尔西', '曼城', '阿森纳']

[list.remove(obj)]
移除列表中某个值的第一个匹配项,无返回值

list01=['利物浦','切尔西','曼联','曼城','阿森纳','热刺']
a=list01.remove('利物浦')
#None ['切尔西', '曼联', '曼城', '阿森纳', '热刺']

del list[i]
删除列表中的某一个元素

list01=['利物浦','切尔西','曼联','曼城','阿森纳','热刺']
del list01[1]
print(list01)
#['利物浦', '曼联', '曼城', '阿森纳', '热刺']

(2)列表的修改
[list.append(obj)]
在列表末尾添加新的对象
[list.insert(index, obj)]
将对象插入列表
[list.extend(seq)]
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
[list.sort(cmp=None, key=None, reverse=False)]
对原列表进行排序
[list.reverse()]
反向列表中元素
[list.clear()]
清空列表中元素
[list.copy()]
产生一个列表的副本

list01=['利物浦','切尔西','曼联','曼城','阿森纳','热刺']
list01.append('纽卡斯尔');print(list01)
list01.insert(2,'西汉姆联队');print(list01)
list01.extend(['尤文图斯','那不勒斯','国际米兰']);print(list01)
list01.sort();print(list01)  #根据字符串首字符的Unicode码进行比较
#sort()要求列表中的元素类型一致且能够进行比较运算
list01.reverse();print(list01)
list01.clear();print(list01)
'''
['利物浦', '切尔西', '曼联', '曼城', '阿森纳', '热刺', '纽卡斯尔']
['利物浦', '切尔西', '西汉姆联队', '曼联', '曼城', '阿森纳', '热刺', '纽卡斯尔']
['利物浦', '切尔西', '西汉姆联队', '曼联', '曼城', '阿森纳', '热刺', '纽卡斯尔', '尤文图斯', '那不勒斯', '国际米兰']
['切尔西', '利物浦', '国际米兰', '尤文图斯', '曼城', '曼联', '热刺', '纽卡斯尔', '西汉姆联队', '那不勒斯', '阿森纳']
['阿森纳', '那不勒斯', '西汉姆联队', '纽卡斯尔', '热刺', '曼联', '曼城', '尤文图斯', '国际米兰', '利物浦', '切尔西']
[]
'''

(3)其他操作
[max(list)]:返回列表元素最大值
[min(list)]:返回列表元素最小值
[list(seq)]:将元组转换为列表

list01=['利物浦','切尔西','曼联','曼城','阿森纳','热刺']
a=max(list01)
b=min(list01)
print(a,b)
for x in list01: print(ord(x[0]),end=' ')
c=list("123456") #只有序列才能转换成List
print(c)
"""
阿森纳 切尔西
21033 20999 26364 26364 38463 28909 (元素首字母Unicode码)
['1', '2', '3', '4', '5', '6']
"""

[list.count(obj)]
统计某个元素在列表中出现的次数
[list.index(obj)]
从列表中找出某个值第一个匹配项的索引位置

list01=[1,2,[1,2],"字符串",[1,2],1,3,5,6,4,2,2]
a=list01.index([1,2])
b=list01.count([1,2])
print(a,b) # 2 2

思考:sort和sorted的区别??

(1)sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
(2)list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
(3)sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)
语法:
sort(cmp=None, key=None, reverse=False)
sorted(iterable, cmp=None, key=None, reverse=False)

补充1:列表推导式
语法:[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]
实质就是迭代处理表达式

li = [1,2,3,4,5,6,7,8,9]
print ([x**2 for x in li])
print ([x**2 for x in li if x>5])
print (dict([(x,x*10) for x in li]))
print([ (x, y) for x in range(10) if x % 2 if x > 3 for y in range(10) if y > 7 if y != 8 ])
print([x*y for x in [1,2,3] for y in  [1,2,3]])
'''
[1, 4, 9, 16, 25, 36, 49, 64, 81]
[36, 49, 64, 81]
{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60, 7: 70, 8: 80, 9: 90}
[(5, 9), (7, 9), (9, 9)]
[1, 2, 3, 2, 4, 6, 3, 6, 9]
'''

补充2:列表切片和切片赋值

切片是浅拷贝,不影响原序列;
切片赋值是针对原序列进行操作,改变切片区域的序列
切片赋值,给序列的切片部分新的赋值必须是可迭代类型

a = [1, 2, 3]
b = a[:]  # 切片
a[1:] = []  # 切片赋值
#切片[:]在右侧,切片赋值[:]在左侧;

#为什么b[:]和b的指针是一样的?因为b[:]=[x+1 for x in a]是切片赋值
a = [1,2,3]
# 赋值1
b = a
b[:] = [x+1 for x in a]
print(a,b)
# 赋值2
b = [x-1 for x in a]
print(a,b)

算法题:
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2] ]

#暴力方法,算法复杂度为O(n^3)
 def threeSum(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        temp = []
        for i in range(0, len(nums)-2):
            for j in range(i+1, len(nums)-1):
                for k in range(j+1, len(nums)):
                    a = nums[i]
                    b = nums[j]
                    c = nums[k]
                    if a+b+c == 0:
                        listnum =sorted([a, b, c])
                        if listnum not in temp:
                            temp.append(listnum)
        return temp
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • <center>#1 Two Sum</center> link Description:Given an arr...
    铛铛铛clark阅读 2,135评论 0 3
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,442评论 0 13
  • 第一次临摹蓝莲花,对于这个配色,我也很窒息,希望得到更多的指导。
    Nicole_Ivy阅读 462评论 0 3
  • 清晨,我站在窗台,远处已绽放开的樱花对我微微一笑。这是已是三月,樱花露出了它那娇嫩的小脸,三月的樱花真美呀。晨风中...
    我只在乎在乎我的_2687阅读 219评论 0 0