
03.python列表集合元组字典
| 特性 | 列表 (List) | 集合 (Set) | 元组 (Tuple) | 字典 (Map/Dict) |
|---|---|---|---|---|
| 是否有序 | ✅ 有序 | ❌ 无序 | ✅ 有序 | ✅ 有序 (Python 3.7+) |
| 是否可重复 | ✅ 可重复 | ❌ 不可重复 | ✅ 可重复 | ❌ Key 不可重复 |
| 是否可修改 | ✅ 可变 | ✅ 可变 | ❌ 不可变 | ✅ 可变 |
| 存储结构 | 单个元素 | 单个元素 | 单个元素 | 键值对 |
| Java 对应 | ArrayList | HashSet | 无直接对应 | HashMap |
完整对比示例
go
# 元组 - 不可变序列
tuple_example = (1, 2, 2, 3) # 有序,可重复
print(f"元组: {tuple_example}, 类型: {type(tuple_example)}")
# 列表 - 可变序列
list_example = [1, 2, 2, 3] # 有序,可重复
print(f"列表: {list_example}, 类型: {type(list_example)}")
# 集合 - 无序,不可重复
set_example = {1, 2, 3} # 重复的 2 会被合并
print(f"集合: {set_example}, 类型: {type(set_example)}")
# 字典 - 键值映射
dict_example = {"a": 1, "b": 2}
print(f"字典: {dict_example}, 类型: {type(dict_example)}")输出
text
元组: (1, 2, 2, 3), 类型: <class 'tuple'>
列表: [1, 2, 2, 3], 类型: <class 'list'>
集合: {1, 2, 3}, 类型: <class 'set'>
字典: {'a': 1, 'b': 2}, 类型: <class 'dict'>列表[]
定义
python
list1 = list([1,2])
items4 = list(range(1, 10))
items5 = list('hello')
print(list1) # [1, 2]
print(items4) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(items5) # ['h', 'e', 'l', 'l', 'o']添加元素
python
languages = ['Python', 'Java', 'C++']
languages.append('JavaScript')
print(languages) # ['Python', 'Java', 'C++', 'JavaScript']
languages.insert(1, 'SQL')
print(languages) # ['Python', 'SQL', 'Java', 'C++', 'JavaScript']删除元素
pop方法删除元素时会得到被删除的元素,上面的代码中,我们将pop方法删除的元素赋值给了名为temp的变量。 当然如果你愿意,还可以把这个元素再次加入到列表中,正如上面的代码languages.append(temp)所做的那样。
python
languages = ['Python', 'SQL', 'Java', 'C++', 'JavaScript']
if 'Java' in languages:
languages.remove('Java')
if 'Swift' in languages:
languages.remove('Swift')
print(languages) # ['Python', 'SQL', C++', 'JavaScript']
languages.pop()
temp = languages.pop(1)
print(temp) # SQL
languages.append(temp)
print(languages) # ['Python', C++', 'SQL']
languages.clear()
print(languages) # []常用方法
排序
python
lst=[54,56,77,4,567,34]
asc_lst=sorted(lst) #升序
desc_lst=sorted(lst, reverse=True) # 降序
print('原列表:',lst)
print('升序:',asc_lst)
print('降序:',desc_lst)
# 原列表: [54, 56, 77, 4, 567, 34]
# 升序: [4, 34, 54, 56, 77, 567]
# 降序: [567, 77, 56, 54, 34, 4]反相
python
lst=[54,56,77,4,567,34]
# (2) reversed
new_lst=reversed(lst)
print(type(new_lst)) # <class 'list_reverseiterator'>
print(list(new_lst))
# <class 'list_reverseiterator'>
# [34, 567, 4, 77, 56, 54]合并zip
python
## 如果个数不匹配,按照少的来
x=['a','b','c','d']
y=[10,20,30,40,50]
zipobj=zip(x,y)
print(type(zipobj))
print(list(zipobj))
# <class 'zip'>
# [('a', 10), ('b', 20), ('c', 30), ('d', 40)]加序列enumerate
python
y=[10,20,30,40,50]
enum=enumerate(y, start=1) # 从1开始
print(type(enum))
print(tuple(enum))
# <class 'enumerate'>
# ((1, 10), (2, 20), (3, 30), (4, 40), (5, 50))判断集合是否有值
python
## all集合全部有值则返回true
lst=[10,20,22,30]
lst2=[10,20,'',30]
print(all(lst2)) #False
print(all(lst)) #True
## any集合有一个有值则返回true
print(any(lst2)) #True过滤
python
def fun(num):
return num % 2 == 1
obj = filter(fun,range(1,10))
print(list(obj))
# [1, 3, 5, 7, 9]map
python
def upper(x):
return x.upper()
obj = map(upper,["hello","world"])
print(list(obj))
# ['HELLO', 'WORLD']
