python里输入三个数据_Python 基本功: 3. 数据类型

前文从宏观的角度带你了解了 Python 的宇宙:多多教Python:Python 基本功: 2. 学会调用库​zhuanlan.zhihu.com

如果你浏览了一遍上文列举的一些非常流行的库,那你已经有一个大致的了解 Python 可以帮助你完成什么样的任务。而这篇文章,将反过来,从 Python 最细节的角度,也是你真正开始写 Python 最需要了解的知识:Python 自带的数据类型。

教程需求:Mac OS, Windows, Linux 都可以

安装了 Python 3.0 版本以上, Anaconda

鸭子就是数据类型,嗯

Python在数据处理能力上很强悍,而且还可以轻松的对接大数据平台 (Hadoop, Storm) 做大数据运算。幸运的是,不像其他编程语言 (C++, Java), Python 本身自带的数据种类不算多,而且非常容易调用,有的时候你甚至都不知道这个数据是哪一个类型,这个概念叫:

鸭子类型 (Duck Type):

当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。

重点是最后一句,当我们看到一段 Python 代码里的数据,或者变量,我们很有可能不知道,也不关心这个数据是什么类型的,但是我们关心的是这个数据的行为是什么样的。

整数 int, 浮点 float, 字符串 string

现在我们打开 Anaconda,可以跟着教程输入同样的代码:

In [1]:alibaba_stock_price = 120.5

In [2]:type(alibaba_stock_price)

Out[2]:float

In [3]:alibaba_shares = 300

In [4]:type(alibaba_shares)

Out[4]:int

In [5]:isinstance(alibaba_shares, int)

Out[5]:True

In [6]:alibaba_stock_value = alibaba_stock_price * alibaba_shares

alibaba_stock_value

Out[6]:36150.0

In [7]:type(alibaba_stock_value)

Out[7]:float

In [8]:alibaba_stock_value = int(alibaba_stock_value)

In [9]:type(alibaba_stock_value)

Out[9]:int

In [10]:alibaba_stock_value

Out[10]:36150

现在我们来一行一行分析:alibaba stock price 是 阿里巴巴股票价格,是一个 Python 变量,初始化到数值 120.5,这个时候我们不知道数据类型是什么。

我们调用了 Python 的 type() 方程,这是 Python 自带的可以查看数据类型的方程,你传入一个变量,他返回这个变量的类型。这里显示我们的阿里巴巴股票价格是 float。float 在 Python 里是一个比较通用的代表这个类型可以囊括任何带小数点的正负数。

我们定义了一个新的变量,alibaba shares, 指阿里巴巴的股票数量,这里给了300股。

因为这个数字不带小数点,所以当我们用 type() 查询的时候,Python 给出的是一个整数类 int。 如果一个数字后面没有小数点,你可以默认为是整数,除非这个数字是 300.0, 因为后面带了小数点,虽然小数点后面是0,Python 仍然默认是 float。

isinstance() 是 Python 另外一个自带的查询数据类型的方程,但是这个方程可以帮你直接做比较,这里我传入了 阿里巴巴股票数量 和 整数类 (int),看是否这个变量是属于整数类,返回结果是 True, 也就是是的。

现在我们做一个数学乘法,把 阿里巴巴股票价格 和 阿里巴巴股票数量 相乘,得到的是持有的阿里巴巴股票价值。因为这里是 float 乘以 int, Python 会把返回的数据默认为 float 类型,我想大家应该能猜到,因为 float 囊括了 int。

这里确认了这是一个 float 类型。

Python 允许你在部分数据类型之间强行转换,比如这里就是把 float 转换成 int ,我们得到了一个整数类型的 阿里巴巴股票价值。

确认了是整数类型。

最后我们看一下,这个整数类型的数字是 36150, 比 float 类型少了小数点和后面那个0,因为我们在转换数据类型的时候舍弃了数据的精准度,虽然在这里没有影响,但是在小数点后面不是0的时候就会产生误差,这也是在做数据比较经常出现的 BUG。

In [11]:alibaba_ticker = 'BABA'

In [12]:alibaba_unknown = alibaba_ticker * alibaba_shares

In [13]:alibaba_unknown

Out[13]:'BABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

ABABABABABABABABABABABABABABABABABABABABABABABABABABABABA'

叫爸爸 x 300

11. 这里我们创建了一个新变量 alibaba ticker, 是阿里巴巴股票的英文字符,'BABA'。

12. 当我们用 阿里巴巴股票字符 乘以 阿里巴巴股票数量,会得到什么结果呢?

13. 结果就是 'BABA' 重复了 300遍,返回的是一个字符串 'BABA' x 300。

列表 List

列表是 Python 里非常常用的数据类型,非常灵活和有效,是一个可以存储不同种类数据的容器,并且支持 Indexing, Slicing, Mutating, Inferring, Broadcasting 这类的高级运作。因为这篇文章不是重点讲列表运算,我们就做一些简单的列表示范:

In [1]:price_list = [120.5, 130.0, 110.5, 140.5]

In [2]:ticker_list = ['BABA', 'AAPL', 'PDD']

In [3]:mixed_list = [120, 'BABA', 130.5]

In [4]:share_list = [5, 10, 20]

In [5]:value_list = [price*share for price,share in zip(price_list, share_list)]

In [6]:value_list

Out[7]:[600, 1300, 2200]创建一个价格列表。

创建一个股票字符列表。

创建一个多种类列表。

创建一个股票数量列表。

创建一个股票价值列表,是价格列表的每一个元素 乘以 股票数量的每一个元素,这里用到了 推导 (Inferring) 和 元素打包方程 (Zip()),这两个概念在之后的教程会讲到。

输出股票价值列表。

元组 Tuple

元组也是 Python 里非常常用的数据类型,也是一个可以容纳不同种类的容器,虽然在功能性上和延展性上不如列表,但是创建简单,而且经常被用来容纳不同种类的数据 (列表往往会装载同样类型的数据)。

In [1]:stock_tuple = (100, 120.5, 'BABA')

In [2]:stock_tuple[0]

Out[2]:100

In [3]:stock_tuple[1]

Out[3]:120.5

In [4]:stock_tuple[2]

Out[4]:'BABA'创建了一个股票的元组,第一个元素是股票数量,第二个元素是股票价格,第三个元素是股票的字符串。

获取元组的第一个元素,Python 里获取元素都是从0开始,并且基本上所有容器都支持索引 (运用 "[ ]" + 数字的组合 ),之后会讲到。

获取元组的第二个元素,价格。

获取元组的第三个元素,股票字符。

集合 Set

集合和列表很相似,一个很大的区别是集合里,就像数学定义的,元素都是独一无二的,所以我们可以尝试一下操作:

In [1]:price_list = [120.5, 130, 125, 120.5]

In [2]:price_set = set(price_list)

In [3]:price_set

Out[3]:{120.5, 125, 130}创建一个价格列表,里面有一个重复的元素 120.5。

从列表种类转换成集合种类,运用了 set() 方程。

打印集合,显示去掉了其中一个重复元素

字典 Dict

字典是 Python 里非常重要的数据种类,也是大数据时代很常用的一个容器。我们知道字典是用来查询的,给你一个字,你去查询其含义,在 Python 中也是如此,只不过换了一种形式:

给你一个钥匙 Key, 去查询其值 Value

来看一段代码:

In [1]:price_dict = {'BABA': 120.5, 'PDD': 30}

In [2]:price_dict['BABA']

Out[2]:120.5

In [3]:price_dict['PDD']

Out[3]:30

In [4]:price_dict.keys()

Out[4]:dict_keys(['BABA', 'PDD'])

In [5]:price_dict.values()

Out[5]:dict_values([120.5, 30])一个价格查询字典,里面有 ‘BABA’ 和 ‘PDD' (拼多多)的股票英文字符和股价,这里股票字符是钥匙,值是股价。

查询阿里巴巴股票价格。

查询拼多多股票价格。

查看字典里所有的钥匙。

查看字典里所有值。

小结

这篇文章介绍了 Python 自带的几种数据类型,你们会发现 Python 的数据类型虽然不算多,但是用法非常灵活,多样。这是符合 Pythonic 编程的一种思想,虽然数据本身是很严谨的,但是写 Python 的时候不需要给自己条条框框,语法放飞自我。同样的一行代码在其他的编程语言 C++/C, Java 可能需要十几行,这就是 Python 带来的强功能性+便捷性。

要详细的看每一个数据类型,这里是一个外部链接:Python 3 数据教程​www.runoob.com

你可以打开 Anaconda 或者 PyCharm 很浅的玩玩试试手,在之后的教程中会挖掘出这些工具的潜能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值