认识Python(四)

python的基础知识(学习记录使用)

目的:

  • 字符串
  • 类型和类型转换
  • 字符串方法
  • 列表和成员运算符
  • 列表切片
  • 在列表里还是不在列表里?
  • 可变性和顺序

字符串
在 python 中,字符串的变量类型显示为 str。你可以使用双引号 " 或单引号 ’ 定义字符串。如果你要创建的字符串包含其中一种引号,你需要确保代码不会出错。

>>> my_string = 'this is a string!'
>>> my_string2 = "this is also a string!!!"

还可以在字符串中使用 \,以包含其中一种引号:

>>> this_string = 'Simon\'s skateboard is in the garage.'
>>> print(this_string)

如果不使用 \,注意我们遇到了以下错误:

>>> this_string = 'Simon's skateboard is in the garage.'
File "<ipython-input-20-e80562c2a290>", line 1
    this_string = 'Simon's skateboard is in the garage.'
                         ^
SyntaxError: invalid syntax

颜色高亮部分也表示第二种情形中的字符串有什么错误。你还可以对字符串执行其他多种操作。
在此视频中,你看到了一些操作:

>>> first_word = 'Hello'
>>> second_word = 'There'
>>> print(first_word + second_word)
 
HelloThere
 
>>> print(first_word + ' ' + second_word)
 
Hello There
 
>>> print(first_word * 5)
 
HelloHelloHelloHelloHello
 
>>> print(len(first_word))
 
5

与你到目前为止见到的其他数据类型不同,你还可以使用字符串索引,稍后我们将详细讲解!暂时先看下面这个小示例。注意,Python 索引以 0 开始

>>> first_word[0]

H

>>> first_word[1]

e

** 类型和类型转换**
类型:

整型 浮点型 布尔型 字符串

你在之前的视频中,简单了解了 type(),它可以用来检查你所处理的任何变量的数据类型。

>>> print(type(4))
int
>>> print(type(3.7))
float
>>> print(type('this'))
str
>>> print(type(True))
bool

你可以更改变量类型以执行各种不同的操作。例如
“0” + “5”
结果完全与以下代码的不一样
0 + 5
你认为以下代码的结果是什么?
“0” + 5
下面的代码呢:
0 + “5”
检查变量类型非常重要,可以确保在编程时你所获的结果是你想要的结果。

'''检查变量类型非常重要,可以确保在编程时你所获的结果是你想要的结果
# 类型要相同,否则报错 '''
print("0" + "5")
print(0 + 5)
'''
print("0" + "5") 结果 05
print(0+5)  结果 5
print("0" + 5) TypeError: must be str, not int
print(0 + "5") unsupported operand type(s) for +: 'int' and 'str' 
  '''

**字符串方法 **
方法就像某些你已经见过的函数:
len(“this”)
type(12)
print(“Hello world”)
上述三项都是函数。注意,它们使用了小括号并接受一个参数。

type 和 print 函数可以接收字符串、浮点型、整型和很多其他数据类型的参数,函数 len 也可以接受多种不同数据类型的参数,稍后你将在这节课中详细了解。

python 中的方法和函数相似,但是它针对的是你已经创建的变量。方法与特定变量中的数据类型相关。 方法相当于通过.来调用的一种函数。例如,lower()是一个字符串方法,对于一个叫 “sample string” 的字符串,它可以这样使用:sample_string.lower()。

下图显示了任何字符串都可以使用的方法。

字符串可以用的方法

每个方法都接受字符串本身作为该方法的第一个参数。但是,它们还可以接收其他参数。我们来看看几个示例的输出。

>>> my_string.islower()
True
>>> my_string.count('a')
2
>>> my_string.find('a')
3

可以看出,count 和 find 方法都接受另一个参数。但是,islower 方法不接受参数。如果我们要在变量中存储浮点数、整数或其他类型的数据,可用的方法可能完全不同!

任何专业人士都无法记住所有方法,因此知道如何通过文档查询答案非常重要。掌握扎实的编程基础使你能够利用这些基础知识查询文档,并且构建的程序比死记硬背所有 python 可用函数的人士构建的程序强大得多。

要详细了解字符串和字符串方法,请参阅字符串方法文档

列表和成员运算符
lst_of_random_things = [1, 3.4, ‘a string’, True]
这是一个包含 4 个元素的类别。在 python 中,所有有序容器(例如列表)的起始索引都是 0。因此,要从上述列表中获取第一个值,我们可以编写以下代码:

>>> lst_of_random_things[0]
1

似乎你可以使用以下代码获取最后一个元素,但实际上不可行:

>>> lst_of_random_things[len(lst_of_random_things)] 
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-34-f88b03e5c60e> in <module>()
----> 1 list[len(list)]
 
IndexError: list index out of range

但是,你可以通过使索引减一获取最后一个元素。因此,你可以执行以下操作:

>>> lst_of_random_things[len(lst_of_random_things) - 1] 
True

此外,你可以使用负数从列表的末尾开始编制索引,其中 -1 表示最后一个元素,-2 表示倒数第二个元素,等等。

>>> lst_of_random_things[-1] 
True
>>> lst_of_random_things[-2] 
a string

列表切片
你发现,我们可以使用切片功能从列表中提取多个值。在使用切片功能时,务必注意,下限索引包含在内,上限索引排除在外。

因此:

>>> lst_of_random_things = [1, 3.4, 'a string', True]
>>> lst_of_random_things[1:2]
[3.4]

仅返回列表中的 3.4。注意,这与单个元素索引依然不同,因为你通过这种索引获得了一个列表。冒号表示从冒号左侧的起始值开始,到右侧的元素(不含)结束。

如果你要从列表的开头开始,也可以省略起始值。

>>> lst_of_random_things[:2]
[1, 3.4]

或者你要返回到列表结尾的所有值,可以忽略最后一个元素。

>>> lst_of_random_things[1:]
[3.4, 'a string', True]

这种索引和字符串索引完全一样,返回的值将是字符串。

在列表里还是不在列表里?
你发现,我们还可以使用 in 和 not in 返回一个布尔值,表示某个元素是否存在于列表中,或者某个字符串是否为另一个字符串的子字符串.

>>> 'this' in 'this is a string'
True
>>> 'in' in 'this is a string'
True
>>> 'isa' in 'this is a string'
False
>>> 5 not in [1, 2, 3, 4, 6]
True
>>> 5 in [1, 2, 3, 4, 6]
False

可变性和顺序
可变性是指对象创建完毕后,我们是否可以更改该对象。如果对象(例如列表)可以更改,则是可变的。但是,如果无法更改对象以创建全新的对象(例如字符串),则该对象是不可变的。

>>> my_lst = [1, 2, 3, 4, 5]
>>> my_lst[0] = 'one'
>>> print(my_lst)
['one', 2, 3, 4, 5]

正如上述代码所显示的,你可以将上述列表中的 1 替换为 'one。这是因为,列表是可变的。
但是,以下代码不可行:

>>> greeting = "Hello there"
>>> greeting[0] = 'M'

这是因为,字符串是不可变的。意味着如果要更改该字符串,你需要创建一个全新的字符串。
对于你要使用的每种数据类型,你都需要注意两个事项:
可变吗?
有序吗?
字符串和列表都是有序的。但是,你将在后续部分看到某些数据类型是无序的。对于接下来要遇到的每种数据类型,有必要理解如何设定索引,可变吗,有序吗。了解数据结构的这些信息很有用!

此外,你将发现每种数据类型有不同的方法,因此为何使用一种数据类型(而不是另一种)在很大程度上取决于这些特性,以及如何轻松地利用这些特性!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值