【Python】Tuple (元组)
一.介绍
元组与列表类似,但是元组中的元素是不可变的。元组是一种静态数组,不支持动态扩展,其存储方式相较于列表更加紧凑,因此在同等条件下占用的内存更少。
创建时使用 ( ) 括起来,不用和列表弄混(列表使用 [ ] ):
tup = (1,2,3,4,5)
可以在以下情况下使用元组:
1)在函数中作为参数使用;
2)函数返回值包含多个项的时候使用;
3)遍历字典的键值对的时候使用;
4)作为字符串格式占位符使用。
二.Pythonic技巧
1.使用namedtuple编写更清晰的元组
namedtuple 用于创建带字段名的元组子类,不仅可以使用索引来访问元素,还可以使用字段名来访问元素。这样使用,比元组更可读,比字典更高效。
StudentScore = namedtuple("StudentScore",["name", "math", "english", "chinese"])scores = [StudentScore("小明", 95, 88, 92),StudentScore("小红", 90, 93, 89),StudentScore("小刚", 85, 87, 94)
]for s in scores:total = s.math + s.english + s.chineseprint(f"{s.name} 总分:{total},平均分:{total/3:.1f}")
2.使用元组解包数据
使用 * 进行解包
group1 = ('a','b')
group2 = ('c','d')
new_group = (*group1, *group2, 'e', 'f')
print(new_group)
# Output: ('a', 'b', 'c', 'd', 'e', 'f')
3.占位符_
定义一个元组:
user = ("KaKa",24,"China","Beijing")
如果说我们只想取前面的两个数据,可以使用占位符_来占后面的位置:
(name,age,_,_) = user
如果说后面的字段比较多,可以是*_直接表示所有后面的位置:
(name,age,*_) = user
4.多值返回
对于Java来说,方法每次只能返回一个值,如果想要返回多个类型不同的值,只能封装成一个新的对象。而Python可以使用元组进行多值返回。
def get_data_info(data):average = float(sum(data)) / len(data)sum_value = sum(data)max_value = max(data)min_value = min(data)return (average, sum_value, max_value, min_value)list_of_data = [1,2,3,4,5]
print(get_data_info(list_of_data))