先看一下我的df数据:
df.head()
输出:
# 使用zip和for循环,要求df必须要有列名
for i, column in zip(range(df.shape[1]), df.columns):
# 输出每列的列名以及第一个元素
print(column, df[column][0])
输出:
zip函数解析:
语法:
zip([iterable, ...])
说明:
iterable
:一个或多个可迭代对象,可以使列表、元组、字典、集合、字符串、range()区间等;iterable中可以是不同的数据类型;多个迭代器可以用逗号隔开。
zip()
接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple,然后返回由这些tuples组成的list。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list解压(unzip)。
返回值
:返回zip对象,可以用list、dict等进行转换。
栗子🌰:
list_1 = [1, "love", 2, 3]
list_2 = [4, 5]
dict_3 = {"霜叶": 20, "红于": 21, "二月花": 22}
tuple_4 = ("p", "y", "t", "h", "o", "n")
set_5 = {31, 32, 33}
result = zip(list_1, list_2, dict_3, tuple_4, set_5)
print(list(result))
输出是:[(1, 4, '霜叶', 'p', 32), ('love', 5, '红于', 'y', 33)]
这里有一个疑问:为什么set_5输出对应的是32、33,而不是31、32呢❓
因为set中的元素是无序的,每个元素的地位都是一样的,也就是说集合中不存在索引,各个元素的位置都是随机的。zip需要用于固定顺序, 可索引的对象。为避免出错, 使用前, 尽量转化为最常用的list。(感谢这位博主的解答)