day06、列表 2018-12-29

一、复习

1.分支结构

if 的用法:
if 条件语句:
代码段

if - else 的用法:
if 条件语句:
代码段1
else:
代码段2

if - elif else 的用法:
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3
······
else:
代码段4

2.循环结构

for - in 的用法:
for 变量 in 序列:
循环体
循环:字符串、range、列表、字典、元组、集合、迭代器、生成器
在 python3.x 的时候为:range();在 python2.x 的时候为:x.range();

while 的用法:
while 条件语句:
循环体

遍历序列、循环次数确定时,用 for 循环;
循环次数确定时,用 while 循环。

关键字:continue、break、else
coutinue:结束当前循环,进入下一次循环的判断;
break:结束整个循环;
else:循环正常死亡时,执行 else 里面的代码段

二、了解列表

1.什么是列表(list)

列表是python中提供的容器型数据类型,相对字符串更灵活。是 可变 并且 有序的 。
可变 -----列表中每个元素的值可变,列表长度可变,列表中元素顺序可变。(支持增加、删除、改变)
有序 -----列表中每个元素可以通过下标来确定元素的位置。
例如:
声明一个列表,可以保存公司所有员工的名字。

name = ['张三', '李四', '王五']
print(name)

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day6.list 12.29/02、know list 12.29.py"
['张三', '李四', '王五']

2.列表的字面量:;
通过[]括起来,里面有多个元素,每个元素用逗号隔开:
[1, 2, 3, 'adc', True]
num = 100; [num, 200]
[] -----空列表。

注意:列表元素的类型可以为任何python中支持的数据类型;并且同一个列表中不同元素的类型可以不一样。
任何数据都可以作为列表中的元素:
例如:

list1 = [123, 4.56, 'adc', True, [1, 2, 3], {'name' : '阿黄'}, lambda x: 2 * x]

list2 = [
    123,
    4.56,
    'adc',
    True,
    [1, 2, 3],
    {'name' : '阿黄'},
    lambda x: 2 * x
]

a = [1, 2, 3]
list3 = [a, 4]
print(list3)

运行效果:

[[1, 2, 3], 4]

2.获取列表元素(与字符串获取字符的语法一样)

a.获取单个元素:

列表[下标] -----获取列表中指定下标对应的元素。
例如:

list4 = [10, 20, 30, 40, 'adc']
print(list4[0], list4[-1])

运行效果:

10 adc
b.获取部分元素(切片): -----结果是列表。

列表[开始下标 : 结束下标 : 步长] -----取不到结束下标。
注意:取不到的时候,结果为空列表。
例如:

list5 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list5[2: 4])              # [2, 3]
print(list5[1: 5: 2])           # [1, 3]
print(list5[2: -2: -1])         # []
print(list5[: 2])               # [0, 1]
print(list5[2:: -1])            # [2, 1, 0]
print(list5[:: -1])             # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

运行效果:

[2, 3]
[1, 3]
[]
[0, 1]
[2, 1, 0]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
c.一个一个的取出所有的元素(遍历)

可以直接使用 for 循环直接遍历列表,拿到每个元素;(操作元素时与下标无关时)
也可以通过遍历下标,来拿到列表元素,再遍历。(操作元素时与下标有关时)
例如:

for i in list5:
    print('列表第 %i 个元素为:' % i, i)

for i in range(len(list5)):
    print('下标:', i)
    print('里面的元素为:', list5[i])

运行效果:

列表第 0 个元素为: 0
列表第 1 个元素为: 1
列表第 2 个元素为: 2
列表第 3 个元素为: 3
列表第 4 个元素为: 4
列表第 5 个元素为: 5
列表第 6 个元素为: 6
列表第 7 个元素为: 7
列表第 8 个元素为: 8
列表第 9 个元素为: 9
下标: 0
里面的元素为: 0
下标: 1
里面的元素为: 1
下标: 2
里面的元素为: 2
下标: 3
里面的元素为: 3
下标: 4
里面的元素为: 4
下标: 5
里面的元素为: 5
下标: 6
里面的元素为: 6
下标: 7
里面的元素为: 7
下标: 8
里面的元素为: 8
下标: 9
里面的元素为: 9

练习:求整个班的平均成绩。

cj = [50, 60, 70, 80, 90, 100]
sum1 = 0
print('这个班的成绩为:', cj)
for i in range(len(cj)):
    sum1 += cj[i]
print('这个班的平均成绩为:', sum1 / len(cj))

运行效果:

这个班的成绩为: [50, 60, 70, 80, 90, 100]
这个班的平均成绩为: 75.0

三、列表的增加、删除、修改

1.增加(添加列表元素):

a.append:

列表.append(元素) -----在指定的列表最后,添加指定的元素。
注意:不会产生新的列表,修改的是原列表。
例如:

list1 = ['0','1','2','3','4']
list1.append('5')
print(list1)

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day6.list 12.29/03、add and delete and update 12.29.py"
['0', '1', '2', '3', '4', '5']
b.insert

列表.insert(下标, 元素) -----在指定的下标前,插入指定的元素。
例如:

list1.insert(3, '这是插入')
print(list1)

运行效果:

['0', '1', '2', '这是插入', '3', '4', '5']

2.删除(删除元素)

a.del -----python中的关键字,可以用它删除任何数据。

del 列表[下标] -----删除列表中指定下标所对应的元素,下标不能越界,不然会报错。

del list1[3]
print(list1)

运行效果:

['0', '1', '2', '3', '4', '5']
b.remove

列表.remove(元素) -----删除列表中指定的元素。
注意:若有多个相同,只删除第一个元素;要删除元素若不存在列表中,会报错。

c.pop

列表.pop() -----将列表中最后一个元素,在列表中取出。
列表.pop(下标) -----将列表中指定下标的元素,在列表中取出。
注意:与 del 和 remove 不同,虽然已经不在列表里面,但是可以保存在内存里面。
例如:

str1 = list1.pop()
print(str1, list1)

list1.pop(0)
print(list1)

运行效果:

5 ['0', '1', '2', '3', '4']
['1', '2', '3', '4']

练习:用一个列表统计一个班的年龄(控制台不断输入年龄的值,直到输入 end 为止),然后删除所有小于18岁的年龄
坑一:遍历列表删除部分元素,删不全! -----解决方法:循环时遍历的是原列表的切片(返回一个新列表)

age = input('请输入年龄:')
ages = []
while age != 'end':
    ages.append(int(age))
    age = input('请输入下一个年龄:')
for age in ages[:]:
    if age < 18:
        ages.remove(age)
print('年龄:', ages)

运行效果:

请输入年龄:12
请输入下一个年龄:13
请输入下一个年龄:18
请输入下一个年龄:19
请输入下一个年龄:end
年龄: [18, 19]

练习:将小于 18 岁的取出来
坑二:通过下标遍历列表,取出元素的时候,下标越界和元素获取不全
解决方法:下标对应的元素需要删除,下标不动;不会删除下标加1

age = input('请输入年龄:')
ages = []
while age != 'end':
    ages.append(int(age))
    age = input('请输入下一个年龄:')
i = 0
while i <= len(ages):
    nl = ages[i]
    if nl < 18:
        nl = ages.pop(i)
        print('小于18的年龄有:', nl)
        i += 1

运行效果:

请输入年龄:12
请输入下一个年龄:15
请输入下一个年龄:17
请输入下一个年龄:19
请输入下一个年龄:21
请输入下一个年龄:end
小于18的年龄有: 12
小于18的年龄有: 17

3.修改(修改元素的值)
列表[下标] = 新值 -----修改列表中指定下标的值
例如:

lis2 = [1, 2, 3, 4]
lis2[0] = 0
print(lis2)

运行效果:

[0, 2, 3, 4]

练习:有一个列表中保存的是学生的成绩,要求将列表中成绩小于60分的改成'下一个班见',并且统计留级的有多少人。

lj = 0
zcj = [56, 57, 58, 59, 60, 61, 62, 63]
for i in range(len(zcj)):
    if zcj[i] < 60:
        zcj[i] = '下一个班见'
        lj += 1
print(zcj, '\n留级的有:', lj, '人')

运行效果:

['下一个班见', '下一个班见', '下一个班见', '下一个班见', 60, 61, 62, 63] 
留级的有: 4 人

四、列表的相关运算

1.相关运算:

a.+, *(数学运算)
列表1 + 列表2 -----将两个列表中的元素合并在一起,产生一个新的列表;原列表值不变。
列表1 * N -----将两个列表中的元素重复 N 次,产生一个新的列表;原列表值不变。

b.支持比较运算
列表1 == 列表2 -----判断真假,返回一个布尔值。
列表1 > 列表2 -----比较大小(比较原理与字符串类似),判断真假,返回一个布尔值;只有类型一样的时候才能比较。

2.in / not in

元素 in 列表 -----判断列表中是否存在指定的元素
例如:

print([1, 2] in [1, 2, 3])              # 结果为 False
print([1, 2] in [[1, 2], 'adc', '+'])   # 结果为 True
print('adc' in [1, 'adc', False])       # 结果为 True

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day6.list 12.29/04、list operation 12.29.py"
False
True
True

3.len()

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

4.list

list(数据) -----将序列数据转换成列表。(只有序列才能转换)将序列中所有的元素转换成列表的元素。
注意:不能用python给我们提供的类型的名字来做变量,在使用该类型的时候会报错。

5.序列的其它方法

max() -----获取序列中值最大的元素
min() -----获取序列中值最大的元素
sum() ----- 求序列中所有元素的和
注意:以上三个方法,要求序列中的元素类型必须一致,并且这个类型支持比较运算和甲方运算。(一般是数字序列用)
例如:

print(max([20, 30, 40, 50.50]))
print(min([20, 30, 40, 50.50]))
print(sum([20, 30, 40, 50.50]))

运行效果:

50.5
20
140.5

Process finished with exit code 0

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

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,359评论 0 5
  • 你有一张好陌生的脸, 到今天才看见。 有点心酸在我们之间, 如此短暂的情缘。 看着天空不让泪流下, 不说一句埋怨。...
    贾小呆520阅读 398评论 0 0
  • 战争利:促进科技发展少过量人口为国家开阔领土为世界统一而奋斗。 战争弊:科技发展到饱和状态就开始形成大规模毁灭可能...
    天龙神帝阅读 267评论 1 0
  • 据说,向上的路并不拥挤,拥挤是因为,大多数人选择了安逸
    六月的雨Bill阅读 163评论 0 0
  • Chapter 4 我从梦里惊醒,发现自己浑身湿透,汗水浸透了我的衣衫。我看了看时间,才九点,我睡了不到三个...
    轻繁阅读 549评论 0 1