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'
这是因为,字符串是不可变的。意味着如果要更改该字符串,你需要创建一个全新的字符串。
对于你要使用的每种数据类型,你都需要注意两个事项:
可变吗?
有序吗?
字符串和列表都是有序的。但是,你将在后续部分看到某些数据类型是无序的。对于接下来要遇到的每种数据类型,有必要理解如何设定索引,可变吗,有序吗。了解数据结构的这些信息很有用!
此外,你将发现每种数据类型有不同的方法,因此为何使用一种数据类型(而不是另一种)在很大程度上取决于这些特性,以及如何轻松地利用这些特性!