2024-01-28_Python数组和元组

1. 插入元素

  • arr.append() #在列表的最后一个位置插入元素
motorcycles = ['honda', 'yamaha', 'suzuki'] 
print(motorcycles) 
motorcycles.append('ducati') 
print(motorcycles)
  • arr.insert(position, ele) #在指定位置插入元素。这个指定位置是原本列表的位置,不是新元素的位置。插入新元素后,其他元素往右边移动一个位置。position为正数或者负数结果稍微有点不一样
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, "Hao jue")
print(motorcycles)
#打印出['Hao jue', 'honda', 'yamaha', 'suzuki']
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(-1, "Hao jue")
print(motorcycles)
#打印出['honda', 'yamaha', 'Hao jue', 'suzuki']

2. 删除元素

  • list.pop() #弹出末尾的最后一个元素,返回弹出的元素。list也已经被更新
  • list.pop(position) #弹出指定位置的元素,返回弹出的元素。list也已经被更新
  • del list[0] #删除指定位置的元素,返回弹出的元素。list也已经被更新
  • list.remove(ele) #按照值来删除元素。如下代码会报错,按照值来删除元素,list必须有这个元素。仅仅删除一次。如果要多次删除,就需要用循环。
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.remove("nih")
print(motorcycles)

3. 简单排序

  • list.sort()
  • cars.sort(reverse=True)
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True) #按照字母降序排列。永久性改变一个list。这个方法返回None。
cars.sort() #按照字母顺序升序
  • sorted()方法。这个方法返回一个新的数组,原来的数组不变
cars = ['bmw', 'audi', 'toyota', 'subaru']
sorted(cars)
sorted(cars, reverse=True)
  • list.reverse() 反转列表。reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序。方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse()即可。

4. 数值列表

  • range(1, 10),返回的不是一个list。需要用list(range(1,))来返回list。
  • 对于需要用到index来访问list的情况,或者需要访问数字的情况下,可以用如下:
for i in range(1,5):
    print(cats[i])
  • 在这个示例中,range()只是打印数字1到4,函数range()让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,输出不包含第二个值(这里为5)。要打印数字1~5,需要使用range(1,6)。
  • 使用函数range()时,还可指定步长。
for even in range(2,11,2):
    print(even)
  • 步长可以为负数。如下打印出2和1
  • 通过这个,可以实现反向访问list。
for even in range(2,0,-1):
    print(even)

5.对数字列表进行简单的统计计算

  • 可以使用min、max、sum函数。如果传入的list为空,就会报错。
digits = [1,2,3,4,5,6]
print(digits, min(digits), max(digits), sum(digits))
sum(range(1,5))

6. 列表解析

  • 列表解析让你只需编写一行代码就能生成列表。
squares = [value**2 for value in range(1,11)] 
print(squares) #打印出[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  • 要使用这种语法,首先指定一个描述性的列表名,如squares;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。如上代码中,表达式为value**2,它计算平方值。
  • 接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。for循环为for value in range(1,11),它将值1~10提供给表达式value**2。请注意,这里的for语句末尾没有冒号。
  • 表达式还可以是一个函数。
  • 列表解析事实上就是一个for循环。
sums = [sum(range(1,i+1)) for i in range(1,11)]

def get_sum(i):
    return sum(range(1, i + 1))
sums = [get_sum(i) for i in range(1,11)]
print(sums)
  • 注意sep这个参数,用来给print方法指定分割符。默认是空格。
digits = list(range(1, 1000001))
print(min(digits), max(digits), sum(digits), end=";", sep=";")

带if的列表解析

  • 带有if的列表解析。很容易理解,满足if条件的value才保留下来。
  • 这里可以用步长来处理。
digits = [i for i in range(3,31) if i%3==0]
print(digits) #[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

多变量的列表解析

digits = [(x,y) for x in range(1,5) for y in range(1,6) if y >=2 ]
print(digits)
#返回[(1, 2), (1, 3), (1, 4), (1, 5), (2, 2), (2, 3), (2, 4), (2, 5)]

7. 切片

  • 访问list的指定范围的部分元素,称之为切片。
  • list[start:end]返回一个新的list。
  • 要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0、1和2的元素。
  • 当start为空,表示从头开始。end为空,表示直到结尾(包含最后一个)。
  • start和end都可以为空,表示全部的list元素,用来list复制
  • 当end超过list元素个数的时候,不会报错,会把start开始的全部元素都切片出来。
  • 同样的,start和end都可以用负数。
  • 当start大于end的时候,不会报错,返回空list,即[]
players = ["charles", "martina", "michael", "florence", "eli"]
for player in players[0:3]:
    print(player)
new_players = players[:]

8.元组(tuple)

  • python用()表示一个元组。列表是可以修改的,而不可变的列表被称为元组。
  • 元组的元素不能修改,但是存储元组的变量是可以重新赋值的
dimensions = (200, 50)
print(dimensions)
dimensions = (200, 500)
print(dimensions)

9. 数组合并

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

推荐阅读更多精彩内容