Python基本数据类型List(列表)

List(列表)

是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

列表是写在方括号 [] 之间、用逗号分隔开的元素列表。

和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

列表截取的语法格式如下:

变量[头下标:尾下标]

索引值以 0 为开始值,-1 为从末尾的开始位置。

加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:

实例

#!/usr/bin/python3 list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ] tinylist = [123, 'runoob'] print (list) # 输出完整列表 print (list[0]) # 输出列表第一个元素 print (list[1:3]) # 从第二个开始输出到第三个元素 print (list[2:]) # 输出从第三个元素开始的所有元素 print (tinylist * 2) # 输出两次列表 print (list + tinylist) # 连接列表

以上实例输出结果:

['abcd', 786, 2.23, 'runoob', 70.2]
abcd
[786, 2.23]
[2.23, 'runoob', 70.2]
[123, 'runoob', 123, 'runoob']
['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']

与Python字符串不一样的是,列表中的元素是可以改变的:

实例

>>>a = [1, 2, 3, 4, 5, 6] >>> a[0] = 9 >>> a[2:5] = [13, 14, 15] >>> a [9, 2, 13, 14, 15, 6] >>> a[2:5] = [] # 将对应的元素值设置为 [] >>> a [9, 2, 6]

List 内置了有很多方法,例如 append()、pop() 等等,这在后面会讲到。

注意:

  • 1、List写在方括号之间,元素用逗号隔开。
  • 2、和字符串一样,list可以被索引和切片。
  • 3、List可以使用+操作符进行拼接。
  • 4、List中的元素是可以改变的。

Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串:

优先掌握的操作:

1、按索引存取值(正向存取+反向存取):即可存也可以取

2、切片(顾头不顾尾,步长)

3、长度

4、成员运算in和not in

5、追加

6、删除

7、循环

l=[1,2,3,5,6,7]

#1、按索引存取值(正向存取+反向存取):即可存也可以取
#正向步长
a=l[0:3:2]
print(a) #[1, 3]

#反向步长
b=l[2::-1]
print(b) #[3, 2, 1]

d=l[::-2]
print(d) #[7, 5, 2]


#2、切片操作的一般模式是[start:end],start 和 end 所指的都是索引,截取时,end索引位置的元素不会被截取,这一点尤其要注意
lst = [3, 4, 1, 4, 2, 5, 8]
print(lst[3:6]) #[4, 2, 5]

#倒序索引切片
print(lst[2:-2]) #[1, 4, 2]

#指定开始位置,不指定结束位置,从2开始取到结尾
print(lst[2:]) #[1, 4, 2, 5, 8]

#指定结束位置,不指定开始位置,从0开始取到4
print(lst[:5]) #[3, 4, 1, 4, 2]


#3、长度len
print(len(l)) #6

#4、in、not in
if 3 in l:
    print(True) #True
if 'a' not in l:
    print('a') #a


#5、追加、添加
l.append('a') #添加,放在最后面
print(l) #[1, 2, 3, 5, 6, 7, 'a']

l.insert(1,0) #插入,在第1个元素插入0
print(l) #[1, 0, 2, 3, 5, 6, 7, 'a']

l.extend((4,8)) #末尾添加分开的元组
print(l) #[1, 0, 2, 3, 5, 6, 7, 'a', 4, 8]


#6、删除
#del删除索引指定位置的元素,可以是一个索引范围
del l[1]
print(l) #[1, 2, 3, 5, 6, 7, 'a', 4, 8]

del l[:1]
print(l) 

#pop删除,删除指定索引位置的元素,若未添加索引,则删除最后一位
l.pop()
print(l)
l.pop(1)
print(l)

#remove,删除一个目标值,目标值不在列表或填空都会报错
l.remove(7)
print(l)

#清空列表
l.clear()

#7、循环,for遍历循环
for i in l:
    print(i)

#while循环列表
i=1
while i <= len(l):
    print(i)
    i+=1

#9、求最大\最小值\平均值
maxl=max(l)
minl=min(l)
print(maxl,minl)
#平均值需要导入numpy模块(要安装)
from numpy import *
aver=mean(l)

#10、查询目标值出现的次数
#如果括号里的元素是字符串,记得加单引号
n=l.count(7)

#11、输入的字符串直接用map、eval函数转成列表
#以空格隔开输入一组整形数据
st=list(map(int,input('-->').split()))
print(st)

#以逗号隔开输入一组整形数据
st1=list(map(str,input('-->').split(',')))
print(st1)

结果如下:
-->90 49 30
[90, 49, 30]
-->a,b,c
['a', 'b', 'c']
-->(1,2),[1,2]
[(1, 2), [1, 2]]


#12、列表转字符串
#注意列表元素必需全为字符串,否则报错
strli=''
li=['a','b','c']
c=strli.join(li)
print(c) #abc

#字符串转列表
li1=list(c)
print(li1) #['a', 'b', 'c']

 

 

练习:

1. 有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量

2. 用列表模拟队列

3. 用列表模拟堆栈

4. 有如下列表,请按照年龄排序(涉及到匿名函数)
l=[
    {'name':'alex','age':84},
    {'name':'oldboy','age':73},
    {'name':'egon','age':18},
]
答案:
l.sort(key=lambda item:item['age'])
print(l)

补充:
l.sort() 从小到大排序
l.sort(reverse=True) 从大大小排序

 

如果第三个参数为负数表示逆向读取,以下实例用于翻转字符串:

实例

def reverseWords(input): 
      
    # 通过空格将字符串分隔符,把各个单词分隔为列表
    inputWords = input.split(" ") 
  
    # 翻转字符串
    # 假设列表 list = [1,2,3,4],  
    # list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样) 
    # inputWords[-1::-1] 有三个参数
    # 第一个参数 -1 表示最后一个元素
    # 第二个参数为空,表示移动到列表末尾
    # 第三个参数为步长,-1 表示逆向
    inputWords=inputWords[-1::-1] 
  
    # 重新组合字符串
    output = ' '.join(inputWords) 
      
    return output 
  
if __name__ == "__main__": 
    input = 'I like runoob'
    rw = reverseWords(input) 
    print(rw)

输出结果为:

runoob like I
posted @ 2019-06-03 10:49  ilspring  阅读(127)  评论(0)    收藏  举报