列表和元组、range

列表

比表基本上可分为增、删、改、插四种方法,具体分析如下;

列表的增加

列表增加元素的方法通过append方法实现,新增加的元素会出现在列表的末尾。比如:

li=['add','dkjfj','nvshen']
li.append('张三')
print(li)


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
['add', 'dkjfj', 'nvshen', '张三']

Process finished with exit code 0

人力资源小程序(利用列表增加方法写一个人力资源小程序)

本节课学习到了列表,利用学习到的列表知识做了一个人力资源使用的小程序,主要功能:

  • HR可以不断往里面添加人名,同时删除输入过程中的空格
  • 如果人名很多,中途想终端,直接敲'q‘(不区分大小写)即可,
  • 为防止其他人偷偷输入,设置验证码,当输入正确验证码后,有重新进入添加人名的状态
li=['add','dkjfj','nvshen']
while 1:
    while 1:
        username=input('新员工人名:').strip()
        if username.upper()=='Q':
            print('先休息一下')
            break
        li.append(username)
    print(li)
    while 1:
        l1 = input('验证码:')
        if l1!='q':
            print('输入错误,请重新输入')
        else:
            break

对代码进行优化

li=['add','dkjfj','nvshen']
while 1:
    while 1:
        username=input('新员工人名:').strip()
        if username.upper()=='Q':
            print('先休息一下')
            break
        else:#和上面的代码相比增加了一个else
            li.append(username)
    print(li)
    while 1:
        l1 = input('验证码:')
        if l1!='q':
            print('输入错误,请重新输入')
        else:
            break

 列表的插入

列表的插入有insert和extend两种方法,具体说明:

insert是根据索引插入,在索引的后面插入,具体用法

li=['add','dkjfj','nvshen']
li.insert(2,'张三')#插入完成后,张三占据了第二个索引的位置
print(li)


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
['add', 'dkjfj', '张三', 'nvshen']

Process finished with exit code 0

extend是迭代插入,但是注意只有被插入的对象是元素的时候才能迭代,数字不能迭代,注意对比以下结果

li=['add','dkjfj','nvshen']
li.extend('123')
print(li)


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
['add', 'dkjfj', 'nvshen', '1', '2', '3']

Process finished with exit code 0
li=['add','dkjfj','nvshen']
li.extend(123)
print(li)

D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
Traceback (most recent call last):
  File "F:/python/python学习/人工智能/第一阶段day2/练习.py", line 2, in <module>
    li.extend(123)
TypeError: 'int' object is not iterable

Process finished with exit code 1
li=['add','dkjfj','nvshen']
li.extend([1,2,3])
print(li)

D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
['add', 'dkjfj', 'nvshen', 1, 2, 3]

Process finished with exit code 0

列表的删除

列表的删除总共有pop、remove、clear、del四种方法

1、pop: pop是按照索引进行删除

li=['add','dkjfj','nvshen']
li.pop(1)#删除第一个元素
print(li)

D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
['add', 'nvshen']

Process finished with exit code 0
li=['add','dkjfj','nvshen']
print(li.pop(1))#注意pop有返回值,就是被删除的那个元素

D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
dkjfj

Process finished with exit code 0
li=['add','dkjfj','nvshen']
li.pop()#当pop的索引为空,则默认删除最后一个元素
print(li)

D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
['add', 'dkjfj']

Process finished with exit code 0

2、按照元素进行删除

li=['add','dkjfj','nvshen']
li.remove('add')
print(li)#注意没有返回值,删除了'add'

3、清空列表

li=['add','dkjfj','nvshen']
li.clear()
print(li)#列表中所有的元素均被清空

4、删除列表

li=['add','dkjfj','nvshen']
del.li
print(li)#此时列表已经被删除,运行打印后会报错

还有一种切片删除

li=['add','dkjfj','nvshen']
del li[0:1]#此时删除了第一个元素
print(li)

D:\anoconda\python.exe F:
/python/python学习/人工智能/第一阶段day2/练习.py ['dkjfj', 'nvshen'] Process finished with exit code 0

列表的修改

列表的修改有直接修改和切片修改两种方法

1、直接修改

li=['add','dkjfj','nvshen']
li[0]='张三'#直接将第0个元素改成’张三‘
print(li)

2、切片修改

li=['add','dkjfj','nvshen']
li[0:1]='张三'
print(li)


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
['', '', 'dkjfj', 'nvshen']

Process finished with exit code 0
#相当于将原来第一个元素修改成迭代的’张三‘
li=['add','dkjfj','nvshen']
li[0:1]=['1,2,3']
print(li)


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
['1,2,3', 'dkjfj', 'nvshen']

Process finished with exit code 0
li=['add','dkjfj','nvshen']
li[0:1]=['1,2,3','李四','张三']
print(li)


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
['1,2,3', '李四', '张三', 'dkjfj', 'nvshen']

Process finished with exit code 0

利用列表的切片将列表中的元素变为字符串

colors = ['red','blue','yellow'] 
a = str(colors)[1:-1]
print(a)

结果

'red', 'blue', 'yellow'

 

列表的查找

列表的查找也有两种方法,一种是for循环,另一种是切片查找

1、for循环

li=['add','dkjfj','nvshen']
for i in li:
    print(i)

2、切片查找

li=['add','dkjfj','nvshen']
print(li[0:1])

D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
['add']

Process finished with exit code 0

列表的其他公共方法

1、len,查出列表的元素个数

li=['add','dkjfj','nvshen']
print(len(li))#结果显示有三个元素

D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
3

Process finished with exit code 0

2、count,查找一个列表中一个元素出现几次

li=['add','dkjfj','nvshen']
l1=li.count('add')
print(l1)#结果显示'add'出现了一次

3、索引,与字符串不同,列表中只有index没有find

li=['add','dkjfj','nvshen']
l1=li.index('add')
print(l1)#结果显示'add'的索引值
li=['add','dkjfj','nvshen']
l1=li.index('add1')
print(l1)#没有'add1'这个元素,结果会报错

4、排序,当列表中的元素全为数字时即可对其进行排序

#升序
li=['5','8','3','6','9','2']
li.sort()
print(li)
#降序
li=['5','8','3','6','9','2']
li.sort(reverse=True)
print(li)
#反转
li=['5','8','3','6','9','2']
li.reverse()
print(li)


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
['2', '9', '6', '3', '8', '5']

Process finished with exit code 0

 列表的嵌套

#将'taibai'的首字母大写
li=['taibai','武藤兰','苑昊',['alex','egon',89],23]
li[0]=li[0].capitalize()
print(li)

修改表列表中的元素

#将'昊'改成日天
li=['taibai','武藤兰','苑昊',['alex','egon',89],23]
li[2]='苑日天'
print(li)

直接等于简单,粗暴,最有效

#将'昊'改成日天
li=['taibai','武藤兰','苑昊',['alex','egon',89],23]
li[2]=li[2].replace('','日天')
print(li)

 

#将'alex'全部改成大写
li=['taibai','武藤兰','苑昊',['alex','egon',89],23]
li[3][0]=li[3][0].upper()
print(li)

 元组

子元素可以被查询,切片,但是不能修改,孙元素可以修改。

常见的查询,显示所有元素等都能实现,但是不能更改

tu=(1,2,3,5,'axlex',[2,3,5,'taibai'],'afds')#注意列表是中括号,元组是小括号
#'1,2,3,5,'axlex''都是子元素,[2,3,5,'taibai']中的元素都是孙元素
print(tu[3])
print(tu[0:4])
for i in tu:
    print(i)

可以更改孙元素

tu=(1,2,3,5,'axlex',[2,3,5,'taibai'],'afds')#注意列表是中括号,元组是小括号
#'1,2,3,5,'axlex''都是子元素,[2,3,5,'taibai']中的元素都是孙元素
tu[5][3]=tu[5][3].upper()
print(tu)

join

s='ascd'
s1='*'.join(s)
print(s1)#用*将所有字母链接起来

当对列表使用jion方法的时候,能够将列表转化为字符串。

li=['taibai','武藤兰','苑昊']
l1=''.join(li)
print(l1,type(l1))#将所有的元素链接起来


D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py
taibai武藤兰苑昊 <class 'str'>

Process finished with exit code 0

总结下:join方法能够将列表转化为字符串;split方法能够将字符串转化成列表

range

能够生成一个按照一定顺序排列的列表,但是顾头不顾尾

for i in range(0,10):
    print(i)#生成0-9的随机数
for i in range(10):#如果以0为起始,0可以省略
    print(i)
for i in range(0,10,2):#以2为步长
    print(i)
#倒序
for i in range(10,0,-1):
    print(i)

 删除索引为奇数的元素

li=[11,22,33,44,55]
for i in range(len(li)):
    if i%2==1:
        del li[i]
    else:
        pass
print(li)
posted @ 2018-12-31 01:40  舒畅123  阅读(156)  评论(0编辑  收藏  举报