引言
在上一篇文章中,我们介绍了Python的基础知识,包括变量赋值、打印方法、布尔值、算术运算、类型之间的运算、条件语句和循环。在本篇文章中,我们将深入探讨Python中的列表。列表是Python中最常用的数据结构之一,允许我们存储和操作一组有序的数据。
列表
字符串作为列表
字符串可以被视为字符的列表。
string = "String is fun" # 字符串
print("1: Length: ", len(string))
print("2: string[0]: ", string[0])
print("3: string[0:2]: ", string[0:2]) # 结束位置不包括在内
print("4: string[:3]: ", string[:3]) # 从开始到位置2
print("5: string[3:]: ", string[3:]) # 从位置3开始到结束
print("6: string[:]: ", string[:]) # 整个字符串
print("7: string[-2:]: ", string[-2:]) # 从倒数第二个位置到结束
print("8: string[-0:]: ", string[-0:]) # 整个字符串
print("9: string[::2]: ", string[::2]) # 每隔一个字符取一次
print("10: string[1::2]: ", string[1::2]) # 从位置1开始,每隔一个字符取一次
print("11: Replace ing with ange: ", string.replace("ing", "ange"))
创建列表
list_num = [1, 2, 3, 4] # 数字列表
list_string = ["Chaky", "John", "Peter"] # 字符串列表
list_combine = ["Chaky", 1, 2, True] # 混合类型列表,通常不推荐使用,因为难以处理
# 使用 range() 函数创建列表
print("1: Range ", list(range(10))) # 0到9,range(start, stop, step)
print("2: With step 2 ", list(range(1, 10, 2)))
print("3: With start -10: ", list(range(-5, 5)))
# 使用乘法创建列表
print("4: 5 zeros: ", [0] * 5)
修改列表中的元素
a = [1, 2, 3]
a[0] = 0
print("1: Changing value at index 0 to 0: ", a)
a[0:2] = 5, 6
print("2: Changing using slicing method: ", a)
添加和扩展列表
# append 和 extend 列表
a = [1, 2]
b = [3]
c = 3
a.append(b) # 追加整个列表
print("1: A append b", a)
a.extend(b) # 扩展原列表
print("2: A extend b", a)
a.append(c)
print("3: A append c", a)
# a.extend(c) # 错误,因为c不是可迭代对象
列表排序
a = [3,19,5]
b = ["Car", "Apple", "Boy"]
a.sort()
b.sort() # 尝试加入参数 reverse=True
print("1: Sorted [3, 19, 5]: ", a)
print("2: Sorted ['Car', 'Apple', 'Boy']: ", b)
print("3: Reverse: ", b.reverse(), b) # 记住 b.reverse 或 sort 是就地操作,返回 None
检查元素是否存在
print("1: 3 in a?", 3 in a)
print("2: 4 in a?", 4 in a)
列表循环
for i in range(3): # 不包括3,从0开始
print("1: I: ", i)
# 给定一个列表
some_list = [8, 9, 10]
for num in some_list: # 使用 in
print("2:", num)
for i in range(len(some_list)): # 使用 len (老手喜欢这样做!)
print("3:", some_list[i])
for ix, (value) in enumerate(some_list):
print(f"4: Index: {ix}; value: {value}")
列表中的集合操作
list_a = ['Bulbasaur', 'Charmander', 'Squirtle', 'Charmander']
list_b = ['Caterpie', 'Pidgey', 'Squirtle']
set_a = set(list_a)
print("1: Set a - i.e., no duplicates: ", set_a)
set_b = set(list_b)
# 交集;确保先将列表转换为集合!
print("2: Set intersection: ", set_a.intersection(set_b))
print("3: Set a - b: ", set_a.difference(set_b))
print("4: Set b - a: ", set_b.difference(set_a))
print("5: Set (a-b) + (b-a): ", set_a.symmetric_difference(set_b))
print("6: Set (a-b) + (b-a): ", set_b.symmetric_difference(set_a)) # 结果相同
print("7: Set a U b", set_a.union(set_b)) # 删除任何重复的交集
列表中的随机化操作
# 生成随机列表在研究中也很常见
import random
some_rand_list = []
for i in range(10):
some_rand_list.append(random.randint(1, 10)) # randint(a, b) 返回一个随机整数 N,其中 a<=N<=b
print("1: Some random list: ", some_rand_list)
# 另一种随机方法是使用 shuffle
a = list(range(10))
random.shuffle(a) # 这是就地操作!所以它返回 None!
print("2: Shuffled list: ", a)
print("3: Sampled three elements from a list: ", random.sample(a, 3))
print("4: Choose one element randomly from a list: ", random.choice(a))
# choice 对单词有用,例如:
my_dictionary = ['fridge', 'pen', 'apple']
print("5: Random choice to put in your algorithm: ", random.choice(my_dictionary))
Itertools 库
from itertools import permutations, combinations
print("1: All possible permutations: ", list(permutations(['1','2','3'])))
print("2: All possible pairs, ordered-sensitive: ", list(permutations(['1','2','3'],2)))
print("3: All possible pairs, not ordered-sensitive: ", list(combinations(['1','2','3'], 2)))
列表推导式
# [ 表达式 for 项 in 列表 if 条件 ]
# 假设我有这个列表
x = [1, 2, 3]
# 我想给列表中的每个元素加1,我可以这样做
for i in range(len(x)):
x[i] +=1
print("1:", x)
# 更好的是 - 使用列表推导式
new_x = [num + 1 for num in x] # 记住要用 [] 括起来!!
print("2:", new_x)
嵌套列表
l1 = [1,[2,3], [4,5], [[6, 7], 8]]
print("1: L1: ", l1)
print("2: Length of L1: ", len(l1))
print("3: l1[3][1]: ", l1[3][1])
=== 任务 3 ===
- 声明一个字符串 "Python is cool"。获取前6个字母 "Python"。
- 同样,打印最后4个字母 "cool"。
- 打印 "is"。
- 声明一个字符串 "Malkahc"。反向打印。
- 声明一个字符串 "dffdfPkyktkhkokn"。跳过 "dffdf",然后从该索引开始,跳过偶数位置的字母。它应该打印 "Python"。
- 生成一个从0到9的列表。
- 生成一个从1到9的列表。
- 生成一个从-9到9的列表,跳过偶数。
- 继续,在列表中追加值10。
- 继续,检查值-1的索引。
- 继续,检查列表的长度。
- 继续,移除值10。
- 继续,移除索引5处的值。
- 继续,检查值-20是否在列表中。
- 继续,打乱列表,然后排序。
- 继续,通过循环打印列表中的所有值。
- 继续,从列表中随机选择一个值。
- 继续,打印所有可能的成对排列。
- 继续,使用列表推导式,给列表中的所有值加1。
- 继续,使用for循环和enumerate,打印列表中的值及其索引。
- 创建两个长度为3的列表。一个列表包含你的朋友名字,另一个列表包含他们的ID号。使用zip,打印名字和ID号。
- 创建一个包含 [1, 1, 2, 2] 的列表。使用set,打印唯一值。然后打印这个唯一集合的长度。
- 请参见下面的代码。使用 (1) for 循环 (2) 列表推导式,从这个嵌套列表中分别打印EEG信号和事件。
- 继续,使用列表推导式,打印事件为2的EEG信号。
two_channel_eeg_signal1 = [8, 9]
event1 = 1
two_channel_eeg_signal2 = [3, 3]
event2 = 2
two_channel_eeg_signal3 = [2, 3]
event3 = 2
some_nested_list = []
some_nested_list.append([two_channel_eeg_signal1, event1])
some_nested_list.append([two_channel_eeg_signal2, event2])
some_nested_list.append([two_channel_eeg_signal3, event3])
print("EEG signal: ", some_nested_list)
结语
通过这篇文章,我们深入探讨了Python中的列表操作。我们学习了如何将字符串视为列表、创建列表、修改列表中的元素、添加和扩展列表、对列表进行排序、检查元素是否存在、遍历列表、进行集合操作、随机化列表、使用Itertools库、列表推导式以及处理嵌套列表。通过这些知识和练习任务,希望大家能够更加熟练地操作和理解Python中的列表,为进一步的数据科学学习打下坚实的基础。
在接下来的文章中,我们将继续探讨元组、字典等数据结构,以及如何使用函数、类和异常处理来构建更复杂的程序。希望大家通过实践任务逐步提高编程技能,逐步迈向数据科学的世界。
如果你觉得这篇博文对你有帮助,请点赞、收藏、关注我,并且可以打赏支持我!
欢迎关注我的后续博文,我将分享更多关于人工智能、自然语言处理和计算机视觉的精彩内容。
谢谢大家的支持!