1.数据种类

174 阅读3分钟

数据种类

列表

files = ["f1.txt", "f2.txt", "f3.txt", "f4.txt", "f5.txt"]
print("files[0] ", files[0])
print("files[3] ", files[3])
print("files[-1] ", files[-1])
print("files[-3] ", files[-3])

输出:

files[0]  f1.txt
files[3]  f4.txt
files[-1]  f5.txt
files[-3]  f3.txt

在列表中,你可以存放不同类型的元素,字符,数字,甚至列表里还能有列表。

列表的访问可以通过下标索引,或通过for循环和while循环的遍历


列表的分片/切片

切片操作基本表达式:[start_index:stop_index:step] (1)start_index,如果没有指定,则默认开始值为 0; (2)stop_index 值: 指示到哪个索引值结束,但不包括这个结束索引值。如果没有指定,则取列表允许的最大索引值(即list.length); (3)step 值: 步长值指示每一步大小,如果没有指定,则默认步长值为 1。 (4)当 step>0,start_index 的空值下标为 0,stop_index 为空时,值下标为list.lengthstep 的方向是左到右; (5)当 step<0,start_index 的空值下标为list.lengthstop_index 的空值下标为 0,此时反向为右到左默认正

默认正向索引,编号从 0 开始。

支持反向索引,编号从-1 开始。

左闭右开的规则


列表的常用功能

pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

append()用于在列表末尾添加新的对象。

files = []
for i in range(5):
    files.append("f"+str(i)+".txt") # 在列表末尾添加新对象
    print("has", files)

for i in range(len(files)):
    print(i)
    print("pop", files.pop())   # 从最后一个开始 pop 出
    print("remain", files)

输出:

has ['f0.txt']
has ['f0.txt', 'f1.txt']
has ['f0.txt', 'f1.txt', 'f2.txt']
has ['f0.txt', 'f1.txt', 'f2.txt', 'f3.txt']
has ['f0.txt', 'f1.txt', 'f2.txt', 'f3.txt', 'f4.txt']
pop f4.txt
remain ['f0.txt', 'f1.txt', 'f2.txt', 'f3.txt']
pop f3.txt
remain ['f0.txt', 'f1.txt', 'f2.txt']
pop f2.txt
remain ['f0.txt', 'f1.txt']
pop f1.txt
remain ['f0.txt']
pop f0.txt
remain []
files = ["f1.txt", "f2.txt"]

# 扩充入另一个列表
files.extend(["f3.txt", "f4.txt"])
print("extend", files)

# 按位置添加
files.insert(1, "file5.txt")     # 添加入第1位(首位是0哦)
print("insert", files)

# 移除某索引
del files[1]
print("del", files)

# 移除某值 
files.remove("f3.txt")
print("remove", files)

输出:

extend ['f1.txt', 'f2.txt', 'f3.txt', 'f4.txt']
insert ['f1.txt', 'file5.txt', 'f2.txt', 'f3.txt', 'f4.txt']
del ['f1.txt', 'f2.txt', 'f3.txt', 'f4.txt']
remove ['f1.txt', 'f2.txt', 'f4.txt']

字典

每个元素都有一个标签,或者 Key,对应着这个 Key,存放着他们的值 Value。

files = {"ID": 111, "passport": "my passport", "books": [1,2,3]}
print(files)
print(files["books"])

输出:

{'ID': 111, 'passport': 'my passport', 'books': [1, 2, 3]}
[1, 2, 3]

如果在索引的时候,索引到了一个不存在的 key,就会报错

在字典中的元素不像列表,字典元素是没有顺序的

通过 key 我们就能将对应的 value 进行修改。

files["ID"] = 222
print(files)
files["ID"] = [2,3,4]
print(files)

输出:

{'ID': 222, 'passport': 'my passport', 'books': [1, 2, 3]}
{'ID': [2, 3, 4], 'passport': 'my passport', 'books': [1, 2, 3]}

字典的常用功能

files = {"ID": 111, "passport": "my passport", "books": [1,2,3]}

# 按key拿取,并在拿取失败的时候给一个设定好的默认值
print('files["ID"]:', files["ID"])
print('files.get("ID"):', files.get("ID"))

# 将另一个字典补充到当前字典
files.update({"files": ["1", "2"]})
print('update:', files)

# pop 调一个item,和列表的 pop 类似
popped = files.pop("ID")
print('popped:', popped)
print("remain:", files)

输出:

files["ID"]: 111
files.get("ID"): 111
update: {'ID': 111, 'passport': 'my passport', 'books': [1, 2, 3], 'files': ['1', '2']}
popped: 111
remain: {'passport': 'my passport', 'books': [1, 2, 3], 'files': ['1', '2']}

元组

元组有它一个唯一的独特性,就是它里面的东西不可变,定下来就定下来了,不让你变。

files = ("file1", "file2", "file3")
print(files[1])
files[1] = "file4"   # 这里会报错

合集

set 里面只会存在非重复的元素,不管你往里面加了多少相同元素,这些相同元素都会坍缩成一个。 这种特性,我们就可以运用它来做交集并集等操作。

注意,在集合中的元素,其实是没有顺序的。(和数据结构中的集合概念相同)

my_files = set(["file1", "file2", "file3"])
print(my_files)
my_files.add("file3")
print(my_files)
my_files.add("file4")
print(my_files)
my_files.remove("file3")
print(my_files)

输出:

{'file3', 'file2', 'file1'}
{'file3', 'file2', 'file1'}
{'file3', 'file2', 'file1', 'file4'}
{'file2', 'file1', 'file4'}
print("my_files", my_files)
your_files = {"file1", "file3", "file5"}  #初始化set的简便写法
print("your_files", your_files)
print("交集 ", your_files.intersection(my_files))
print("并集 ", your_files.union(my_files))
print("补集 ", your_files.difference(my_files))

输出:

my_files {'file2', 'file1', 'file4'}
your_files {'file3', 'file1', 'file5'}
交集  {'file1'}
并集  {'file3', 'file2', 'file1', 'file5', 'file4'}
补集  {'file3', 'file5'}