Python学习笔记13(List Part2)

Charpter8 List Part2

知识点1:
通过+号将两个列表组成一个新的列表。

list5 = [1,2,3,4,5]
list6 = ['a' , 'b' , 'c']
list7 = list5 + list6
print(list7)

输出结果为:
[1, 2, 3, 4, 5, ‘a’, ‘b’, ‘c’]
需要注意的是,对列表进行拼接不改变原先两个列表的值。

知识点2:
通过:来Slice(分割,切片)列表,与字符串类似。

list8 = [1,2,3,4,5,6]
print(list8[:3])

输出结果为:
[1, 2, 3]
要注意的是,第二个参数是不包括的。

知识点3:
List Methods!!联想前面的String Methods!

x = list()
print(type(x))
print(dir(x))

输出结果为:
<class ‘list’>
[‘add’, ‘class’, ‘contains’, ‘delattr’, ‘delitem’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘getitem’, ‘gt’, ‘hash’, ‘iadd’, ‘imul’, ‘init’, ‘init_subclass’, ‘iter’, ‘le’, ‘len’, ‘lt’, ‘mul’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘reversed’, ‘rmul’, ‘setattr’, ‘setitem’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’]
dir所显示的内容就是list的methods!

知识点4:
从头开始创建列表,即先建立一个空列表,利用.append()向里面添加元素。

list9 = list()
list9.append('Hello')
list9.append('Gary')
print(list9)
list9.append(1) #这里只能输入一个参数,不能多个元素添加
print(list9)

有几个注意点:

  • 元素的添加是逐个逐个按顺序添加的
  • 注意不能够出现x = x.append(),因为list是muteable的,所以每append一次都会返回一个新的值,这样复制的话会乱掉。

知识点5:
利用in来判断元素是否在列表当中。

list10 = [1,3,5,7,9]
print(1 in list10)
print(2 in list10)
print(2 not in list10)

输出结果为:
True
False
True

知识点6:
列表的自动排序.sort()

list11 = [1,56,2,6,4,8,9]
list11.sort()
print(list11)
print(list11[1])

输出结果为:
[1, 2, 4, 6, 8, 9, 56]
2
注意点:

  • 调换顺序之后的列表是一个新的列表了,所以list11[1]输出结果为2
  • 注意列表与字符串之间sort的区别

知识点7:
在Python中现成集成的一系列函数可以对列表很友好,可以将列表当作一个参数来进行处理。例如len()、max()等等。

list12 = [1,2,3,4,5,6]
print(len(list12))
print(max(list12))
print(min(list12))
print(sum(list12)/len(list12))

输出结果为:
6
6
1
3.5

那么为什么有了这些函数功能,为什么之前需要学习用for loop等来写呢?这就是一个理解的过程,所以现在可以用更加简便的列表来完成相关的功能操作,例如重写之前的一个输入算平均值的程序。

list13 = list() #新建一个空列表

while True:
    inp = input('Enter the number')
    if inp == 'Done':
        break
    try:
        num = float(inp)
    except:
         print('You enter the wrong number')
         quit()
    list13.append(num)
avr = sum(list13)/len(list13)
print(avr)

输出结果为:
Enter the number1
Enter the number2
Enter the number3
Enter the number4
Enter the number5
Enter the numberDone
3.0

#回顾一下之前的写法:

sum = 0
cont = 0
while True:
    inp = input('Enter your number')
    if inp == 'Done':
        break
    try:
        num = float(inp)
    except:
        print('You enter the wrong number')
        quit()
    sum = sum + num
    cont = cont + 1
avr = sum/cont
print(avr)

注意两种方法的区别

  • 列表的方法一次性占用多个内存,普通方法一次性占用一个内存
  • 列表的方法只需要一个列表的变量就能完成功能,普通的方法需要定义两个变量

知识点8
字符串与列表之间,.split()的功能为拆分字符串,返回一个列表

str1 = 'Gary is a good man'
list13 = str1.split()
print(list13)
print(list13[0])  #作用主要是提取字符串中想要的内容。

输出结果为:
[‘Gary’, ‘is’, ‘a’, ‘good’, ‘man’]
Gary

.split()有一个智能之处就在于它可以自动处理掉多于的空格号,例如:

str2 = 'Gary is       a good     man'
list14 = str2.split()
print(list14)

输出结果为:
[‘Gary’, ‘is’, ‘a’, ‘good’, ‘man’]

如果split中不输入参数的话,就说明识别空格号进行字符串分割,

str3 = 'Gary;is;a;good;man'
list15 = str3.split()
print(list15)
print(len(list15))  #返回的是一个长度为1的列表

如果在括号内输入相应的识别符号,就能进行按照给定的识别符号进行分割。

str4 = 'Gary,is,,,,,,,a   ,,,good , man'
list16 = str4.split(',')
print(list16)
print(len(list16))

输出结果为:
[‘Gary’, ‘is’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, 'a ', ‘’, ‘’, 'good ‘, ’ man’]
13
每两个逗号之间这样计算比较容易,如果两个逗号挨着的话,对应的列表中的元素为空。

'''
提取mbox-short中的邮箱星期并且输出
'''

fhandle = open('mbox-short.txt')
for line in fhandle:
    line = line.rstrip()
    if line.startswith('From '):
        list = line.split()
        print(list[2])  #单分割

print('----------------------------')

'''
提取mbox-short中的邮箱的host地址
'''
fhandle = open('mbox-short.txt')
for line in fhandle:
    line = line.rstrip()
    if line.startswith('From '):
        list = line.split()
        str = list[1]
        list1 = str.split('@')
        print(list1[1])  #双重分割

发布了34 篇原创文章 · 获赞 5 · 访问量 6934

猜你喜欢

转载自blog.csdn.net/weixin_43593303/article/details/89481834
今日推荐