阿环的PYTHON之旅-DAY 5

组合数据类型

  • 不像C语言,PYTHON函数可以输出多个返回值,如
 def fun(a,b):    
    "返回多个值,结果以元组形式表示"
    return a,b,a+b
print(fun(1,2))``		
  • 序列(list类型)和集合(set类型)
    序列有顺序,可以分片,特殊的序列(元组)一旦创建就不能被修改,元素可重复 用()创建(半角符号)
    集合元素无顺序,不能分片,元素可以动态增加或删除,同时集合元素独一无二,可以过滤掉重复元素 用{ }创建
  • set(x) 函数
    该函数可以生成任何集合,输入任何元素,得到无重复排序任意的集合

列表和数组的差别

C语言采取数组,而Python采用列表。列表和数组都是用于存放一个或者多个元素的方法。

  1. 数组需要预先分配大小,但是列表不需要。列表可以在使用中动态插入任何数量的元素
  2. 数组要求元素类型一致,而列表不需要

值得注意的是,列表必须通过直接的数据赋值才能生成,简单的将一个列表赋值给另一个列表并不会产生新的列表对象,如
在这里插入图片描述
在这里插入图片描述
事实上lt和ls都指向同一组数据,因此修改了lt ls也会被修改。

实例:基本统计值计算

在写这个实例时,我遇到了点小问题
在这里插入图片描述
如图所示,如果我直接写成nums.append(x),则得到的列表会变成
在这里插入图片描述
显然列表中的数值是string类型的值,而不是我要的数字。问题就出在 input函数中。
在Python3中默认input函数输入的数据是str类型,而eval()的作用是将输入的字符串当成表达式进行运算,我的理解是把字符串的’ ‘去掉。

字典数据类型

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {}.
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
值可以取任何数据类型,但是键必须是不可变的,如字符串、数字或元组。
因此如list就不能作为键使用(直接报错),因为可以修改,一旦改了数据就永远丢失了。(只是我的粗略的理解,具体解释请看https://blog.csdn.net/sinat_32547403/article/details/73613222)

列表推导式

Python对列表进行循环操作时可以使用列表推导式代替多层的for,例如

ls=[i for i in range(1,101)]
lt=[i for i in 'Python']	#lt=['P', 'y', 't', 'h', 'o', 'n']

此外推导式中还可以增加筛选条件

print([i for i in range(11) if i > 4])

还可以这样

names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
         ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
# 方法一: 普通方法
l4 = []
for i in names:
    for j in i:
        if j.count('e') >= 2:
            l4.append(j)
print(l4)

# 方法二: 列表推导式方法
print([j for i in names for j in i if j.count('e') >= 2 ])
#引用自https://www.cnblogs.com/zanao/p/11061738.html

除了列表,在字典上也可以用推导式

dict={key:value for key in 'Python' for value in range(6)
#{'P': 5, 'y': 5, 't': 5, 'h': 5, 'o': 5, 'n': 5} ~~其实我不太理解为什么每个值都是5...~~  

同理我们可以用推导式对整个字典中键或值进行修改(也可以加筛选条件)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值