DeepOps的Python小笔记-天池龙珠计划-Python训练营-Task 02:DAY4

进行到了训练营的第四天,进入了下一个环节Task2,Task2还是python的基础内容,主要包括:

  1. 列表
  2. 元组
  3. 字符串
  4. 字典
  5. 集合
  6. 序列
    DAY 4 的学习内容:列表、元组

1 列表

1.1 列表的定义

中括号包围,逗号分割

1.2 列表的创建

直接创建

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

利用range()创建

x = list(range(10))
x = list(range(1, 11, 2))
x = list(range(10, 1, -2))

利用推导式创建列表

x = [0] * 5
x = [0 for i in range(5)]
x = [i ** 2 for i in range(1, 10)]
x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]

创建一个混合列表

mix = [1, 'lsgo', 3.14, [1, 2, 3]]

创建一个空列表

empty = []

1.3 向列表中添加元素

list.append(obj) 在列表末尾添加新的对象,特别注意append和extend的区别

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.append(['Thursday', 'Sunday'])
print(x)  
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', ['Thursday', 'Sunday']] 
print(len(x))  # 6

list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.extend(['Thursday', 'Sunday'])
print(x)  
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Thursday', 'Sunday']

list.insert(index, obj) 在编号 index 位置插入 obj。

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.insert(2, 'Sunday')
print(x)
# ['Monday', 'Tuesday', 'Sunday', 'Wednesday', 'Thursday', 'Friday']

print(len(x))  # 6

1.4 删除列表中的元素

list.remove(obj) 移除列表中某个值的第一个匹配项

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.remove('Monday')
print(x)  # ['Tuesday', 'Wednesday', 'Thursday', 'Friday']

list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
y = x.pop()
print(y)  # Friday

y = x.pop(0)
print(y)  # Monday

y = x.pop(-2)
print(y)  # Wednesday
print(x)  # ['Tuesday', 'Thursday']

直接使用序号去指定删除,del x[0:2],python的切片还是非常好用,想怎么切就怎么切。

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
del x[0:2]
print(x)  # ['Wednesday', 'Thursday', 'Friday']

1.5 获取列表中的元素

切片的通用写法是 start : stop : step

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
# 情况 1 - "start :"
print(x[3:])  # ['Thursday', 'Friday']
print(x[-3:])  # ['Wednesday', 'Thursday', 'Friday']
# 情况 2 - ": stop"
print(week[:3])  # ['Monday', 'Tuesday', 'Wednesday']
print(week[:-3])  # ['Monday', 'Tuesday']
# 情况 3 - "start : stop"
print(week[1:3])  # ['Tuesday', 'Wednesday']
print(week[-3:-1])  # ['Wednesday', 'Thursday']
# 情况 4 - "start : stop : step"
print(week[1:4:2])  # ['Tuesday', 'Thursday']
print(week[:4:2])  # ['Monday', 'Wednesday']
print(week[1::2])  # ['Tuesday', 'Thursday']
print(week[::-1])  
# 情况 5 - " : "复制列表中的所有元素(浅拷贝)。
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:])  
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

浅拷贝与深拷贝 浅拷贝复制元素,不复制引用,深拷贝复制引用。

list1 = [123, 456, 789, 213]
list2 = list1
list3 = list1[:]

print(list2)  # [123, 456, 789, 213]
print(list3)  # [123, 456, 789, 213]
list1.sort()
print(list2)  # [123, 213, 456, 789] 
print(list3)  # [123, 456, 789, 213]

#list1 记录的是引用,深浅拷贝过去的都是引用,修改相同引用因此数据都发生变化
list1 = [[123, 456], [789, 213]] 
list2 = list1
list3 = list1[:]
print(list2)  # [[123, 456], [789, 213]]
print(list3)  # [[123, 456], [789, 213]]
list1[0][0] = 111
print(list2)  # [[111, 456], [789, 213]]
print(list3)  # [[111, 456], [789, 213]]

1.6 列表的常用操作符

等号操作符:==
连接操作符 +
重复操作符 *
成员关系操作符 in、not in
「等号 ==」,只有成员、成员位置都相同时才返回True。

列表拼接有两种方式,用「加号 +」和「乘号 *」,前者首尾拼接,后者复制拼接。

list1 = [123, 456]
list2 = [456, 123]
list3 = [123, 456]

print(list1 == list2)  # False
print(list1 == list3)  # True

list4 = list1 + list2  # 等同extend()
print(list4)  # [123, 456, 456, 123]

list5 = list3 * 3
print(list5)  # [123, 456, 123, 456, 123, 456]

list3 *= 3
print(list3)  # [123, 456, 123, 456, 123, 456]

print(123 in list3)  # True
print(456 not in list3)  # False

1.7 列表的其他方法

list.count(obj) 统计某个元素在列表中出现的次数

list1 = [123, 456] * 3
print(list1)  # [123, 456, 123, 456, 123, 456]
num = list1.count(123)
print(num)  # 3

list.index(x[, start[, end]]) 从列表中找出某个值第一个匹配项的索引位置
list.reverse() 反向列表中元素
list.sort(key=None, reverse=False) 对原列表进行排序。

x = [123, 456, 789, 213]
x.sort()
print(x)
# [123, 213, 456, 789]

x.sort(reverse=True)
print(x)
# [789, 456, 213, 123]


# 获取列表的第二个元素
def takeSecond(elem):
    return elem[1]

x = [(2, 2), (3, 4), (4, 1), (1, 3)]
x.sort(key=takeSecond)
print(x)
# [(4, 1), (2, 2), (1, 3), (3, 4)]

x.sort(key=lambda a: a[0])
print(x)
# [(1, 3), (2, 2), (3, 4), (4, 1)]

2 元组

「元组」定义语法为:(元素1, 元素2, …, 元素n)
小括号把所有元素绑在一起
逗号将每个元素一一分开

2.1 创建和访问一个元组

Python 的元组与列表类似,不同之处在于tuple(元组)被创建后就不能对其进行修改,类似字符串。
元组使用小括号,列表使用方括号。
元组与列表类似,也用整数来对它进行索引 (indexing) 和切片 (slicing)。
创建元组可以用小括号 (),也可以什么都不用,为了可读性,建议还是用 ()。
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。
创建二维元组

x = (1, 10.31, 'python'), ('data', 11)
print(x)

2.2 更新和删除一个元组

t1 = (1, 2, 3, [4, 5, 6])
print(t1)  # (1, 2, 3, [4, 5, 6])

t1[3][0] = 9
t1[1] = 9 #**会报错不可修改**
print(t1)  # (1, 2, 3, [9, 5, 6])

2.3 元组相关的操作符

等号操作符:==
连接操作符 +
重复操作符 *
成员关系操作符 in、not in
「等号 ==」,只有成员、成员位置都相同时才返回True。

元组拼接有两种方式,用「加号 +」和「乘号 *」,前者首尾拼接,后者复制拼接。

【例子】

2.4 内置方法

元组大小和内容都不可更改,因此只有 count 和 index 两种方法。

2.5 解压元组

解压(unpack)一维元组(有几个元素左边括号定义几个变量)

# 解压(unpack)一维元组
t = (1, 10.31, 'python')
(a, b, c) = t
print(a, b, c)
# 1 10.31 python

#例子】解压二维元组
t = (1, 10.31, ('OK', 'python'))
(a, b, (c, d)) = t
print(a, b, c, d)
# 1 10.31 OK python

Leave a Reply

Your email address will not be published.