基于Python的数据科学系列(2):列表

引言

        在上一篇文章中,我们介绍了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 ===

  1. 声明一个字符串 "Python is cool"。获取前6个字母 "Python"。
  2. 同样,打印最后4个字母 "cool"。
  3. 打印 "is"。
  4. 声明一个字符串 "Malkahc"。反向打印。
  5. 声明一个字符串 "dffdfPkyktkhkokn"。跳过 "dffdf",然后从该索引开始,跳过偶数位置的字母。它应该打印 "Python"。
  6. 生成一个从0到9的列表。
  7. 生成一个从1到9的列表。
  8. 生成一个从-9到9的列表,跳过偶数。
  9. 继续,在列表中追加值10。
  10. 继续,检查值-1的索引。
  11. 继续,检查列表的长度。
  12. 继续,移除值10。
  13. 继续,移除索引5处的值。
  14. 继续,检查值-20是否在列表中。
  15. 继续,打乱列表,然后排序。
  16. 继续,通过循环打印列表中的所有值。
  17. 继续,从列表中随机选择一个值。
  18. 继续,打印所有可能的成对排列。
  19. 继续,使用列表推导式,给列表中的所有值加1。
  20. 继续,使用for循环和enumerate,打印列表中的值及其索引。
  21. 创建两个长度为3的列表。一个列表包含你的朋友名字,另一个列表包含他们的ID号。使用zip,打印名字和ID号。
  22. 创建一个包含 [1, 1, 2, 2] 的列表。使用set,打印唯一值。然后打印这个唯一集合的长度。
  23. 请参见下面的代码。使用 (1) for 循环 (2) 列表推导式,从这个嵌套列表中分别打印EEG信号和事件。
  24. 继续,使用列表推导式,打印事件为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中的列表,为进一步的数据科学学习打下坚实的基础。

        在接下来的文章中,我们将继续探讨元组、字典等数据结构,以及如何使用函数、类和异常处理来构建更复杂的程序。希望大家通过实践任务逐步提高编程技能,逐步迈向数据科学的世界。

如果你觉得这篇博文对你有帮助,请点赞、收藏、关注我,并且可以打赏支持我!

欢迎关注我的后续博文,我将分享更多关于人工智能、自然语言处理和计算机视觉的精彩内容。

谢谢大家的支持!

  • 40
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的Anthony

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值