数据类型之列表与元组

一.列表

1.创建列表

注:列表是可变类型

① 直接赋值

:

food_list = ['康师傅方便面', '酸奶', '雪糕', '康师傅方便面', 18, 8.88, [1, 2, 3]]

② 创建空列表

1:

list1 = []
2:

list2 = list()

2.数据类型转换

:

string_value = 'python'

list_word = list(string_value)

print(list_word)

输出:

['p', 'y', 't', 'h', 'o', 'n']

3.列表遍历

:

food_list1 = ['康师傅方便面', '酸奶', '雪糕', '康师傅方便面']

food_list2 = ['啤酒', '饮料', '矿泉水']

food_list3 = ['花生', '瓜子', '火腿肠']

food_list = [food_list1, food_list2, food_list3]

for i, value in enumerate(food_list):		# enumerate()函数获取列表下标

    print(f'第{i + 1}个元素的值是{value}')
    
    for j, name in enumerate(value):
    
        print(f'第{j + 1}个元素的值是{name}')

输出:1个元素的值是['康师傅方便面', '酸奶', '雪糕', '康师傅方便面']1个元素的值是康师傅方便面
第2个元素的值是酸奶
第3个元素的值是雪糕
第4个元素的值是康师傅方便面
第2个元素的值是['啤酒', '饮料', '矿泉水']1个元素的值是啤酒
第2个元素的值是饮料
第3个元素的值是矿泉水
第3个元素的值是['花生', '瓜子', '火腿肠']1个元素的值是花生
第2个元素的值是瓜子
第3个元素的值是火腿肠

4. list comprehensions(列表推导式)

① 最简形式

语法:

[expression for item in list]		等价于

for item in list:

	expression
1:

list_val = []

for i in range(1, 6):

    list_val.append(i ** 2)
    
print(list_val)

输出:

[1, 4, 9, 16, 25]


new_list = [i ** 2for i in range(1, 6)]

print(new_list)

输出:

[1, 4, 9, 16, 25]
2:

word_list = ['I', 'love', 'python']

print([i.upper() for i in word_list])

输出:

['I', 'LOVE', 'PYTHON']

② 过滤条件形式

注:if条件写在for循环后面,if-else写在for循环前面

语法:

[expression for item in list if contitianal]		等价于

for item in list:

	if conditional
	
		expression
1:

list_val = []

for i in range(21):

    if i % 2 == 0:
    
        list_val.append(i)
        
print(list_val)

输出:

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]




new_list = [i for i in range(21) if i % 2 == 0]

print(new_list)

输出:

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
2:

names = ['Lixiaohong', 'Lucy', 'Kenzo']

list_val = []

for i in names:

    if len(i) < 8:
    
        list_val.append(i.lower())
        
    else:
    
        list_val.append(i.upper())
        
print(list_val)

输出:

['LIXIAOHONG', 'lucy', 'kenzo']




new_list = [i.lower() if len(i) < 8 else i.upper() for i in names]

print(new_list)

输出:

['LIXIAOHONG', 'lucy', 'kenzo']

③ 循环嵌套形式

语法:

[expression for i in  list1 for j in list2]		等价于

for item in list1:

	if j in list2:
	
		expression
:

list_val = []

for i in '高富帅':

    for j in '白富美':
    
        list_val.append(i + j)
        
print(list_val)

输出:

['高白', '高富', '高美', '富白', '富富', '富美', '帅白', '帅富', '帅美']




new_list = [i + j for i in '高富帅' for j in '白富美']

print(new_list)

输出:

['高白', '高富', '高美', '富白', '富富', '富美', '帅白', '帅富', '帅美']

二.元组

1. 创建元组

注1:元组是不可变类型

注2:只有一个元素时,需在最后加一个逗号

① 直接赋值

:

tuple_val = (1, 'hello', [1, 2, 3], (1, 2, 3))

tuple_1 = (1,)

② 创建空列表

1:

tuple1 = ()
2:

tuple2 = tuple()

2. 元组遍历

:

tuple_val = (1, 'hello', [1, 2, 3], (1, 2, 3))

for i in tuple_val:

    print(i)

输出:

1
hello
[1, 2, 3]
(1, 2, 3)

3. 内建函数

① count查询

:

tuple_val = (1, 'hello', [1, 2, 3], (1, 2, 3))

print(tuple_val.count(1))

输出:

1

② index查询

返回匹配第一个元素的索引值

:

tuple_val = (1, 'hello', [1, 2, 3], (1, 2, 3))

print(tuple_val.index([1, 2, 3]))

输出:

2

③ 通用:in,not in

4. 元组拆包

1:

info = ('Kenzo','man','20')

name, gender, age = ('Kenzo','man','20')

print(name)

print(gender)

print(age)

输出:

Kenzo
man
20
2:

info = ('Kenzo', 'man', '20')

_, _, age = ('Kenzo', 'man', '20')		# 占位符方式

print(age)

输出:

20
3:

a, b, *rest, c, d = range(10)

print(a)

print(b)

print(c)

print(d)

print(rest)

输出:

0
1
8
9
[2, 3, 4, 5, 6, 7]
4:

num1 = 10

num2 = 5

num1, num2 = num2, num1

print(num1)

print(num2)

输出:

5
10

三.列表 vs 元组

1. 存储空间对比,元组占用空间小于列表

list1 = list()

print(list1.__sizeof__())

tuple1 = tuple()

print(tuple1.__sizeof__())

输出:

20
12

2. 运行效率对比, 元组快于列表

from timeit import timeit

print(timeit('list1 = [1,2,3,4,5]', number=100000000))

print(timeit('tuple1 = (1,2,3,4,5)', number=100000000))

输出:

5.0030306
1.2714490000000005
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值