- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Python入门基础之数字字符串与列表由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Python的主要应用是进行科学计算,科学计算的基础就是数字,字符串和列表。本文将会详细的给大家介绍一下这三个数据类型的使用情况.
数字是任何科学计算中非常中要的类型,在Python中最常见的数字类型就是int和float.
看几个基本的数字操作:
1
2
3
4
5
6
7
8
|
In [
8
]:
1
+
1
Out[
8
]:
2
In [
9
]:
3
*
2
+
10
Out[
9
]:
16
In [
10
]: (
65
+
23
)
/
4
Out[
10
]:
22.0
|
上面我们可以看到,没有小数的是int类型,带有小数的是float类型.
除法运算 (/) 永远返回浮点数类型。如果要做 floor division得到一个整数结果(忽略小数部分)你可以使用 // 运算符;如果要计算余数,可以使用 % 。
1
2
3
4
5
6
7
8
|
In [
11
]:
54
/
4
Out[
11
]:
13.5
In [
12
]:
54
/
/
4
Out[
12
]:
13
In [
13
]:
54
%
4
Out[
13
]:
2
|
** 可以表示乘方运算:
1
2
|
In [
14
]:
4
*
*
3
Out[
14
]:
64
|
我们可以将数字的运算赋值给特定的变量,并且可以使用该变量进行后续的运算.
1
2
3
4
5
6
|
In [
15
]: a
=
12
In [
16
]: b
=
14
In [
17
]: a
*
b
Out[
17
]:
168
|
在交互式环境中,_表示上一个输出:
1
2
3
4
5
|
In [
17
]: a
*
b
Out[
17
]:
168
In [
18
]:
100
+
_
Out[
18
]:
268
|
除了int和float,Python还支持其他的数据类型,比如Decimal和Fraction,甚至还支持复数.
Python中字符串有三种表示形式,可以使用单引号,双引号和三引号来表示.
1
2
3
4
5
|
In [
19
]: site1
=
'www.flydean.com'
In [
20
]: site2
=
"www.flydean.com"
In [
21
]: site3
=
"""www.flydean.com"""
|
三引号主要用于跨行输出,字符串中的回车换行会自动包含到字符串中,如果不想包含,在行尾添加一个 \ 即可。如下
1
2
3
4
5
|
print
(
"""\
Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname Hostname to connect to
"""
)
|
如果需要转义的话,可以使用反斜杠 \ 。
1
2
3
4
|
In [
22
]: site4
=
"www.\"flydean\".com"
In [
23
]: site4
Out[
23
]:
'www."flydean".com'
|
如果你不希望前置了 \ 的字符转义成特殊字符,可以使用 原始字符串 方式,在引号前添加 r 即可
1
2
|
In [
24
]:
print
(r
"www.\"flydean\".com"
)
www.\
"flydean\"
.com
|
字符串通过 + 来进行连接,也可以使用 * 来进行复制:
1
2
3
4
5
|
In [
25
]:
"www"
+
"flydean.com"
Out[
25
]:
'wwwflydean.com'
In [
26
]:
"www.flydean.com"
*
3
Out[
26
]:
'www.flydean.comwww.flydean.comwww.flydean.com'
|
相邻的两个或多个 字符串字面值 (引号引起来的字符)将会自动连接到一起. 。
1
2
|
In [
27
]:
"www"
"flydean.com"
Out[
27
]:
'wwwflydean.com'
|
注意,上面的自动连接操作,只能对两个字面量有效,如果是变量的话则会报错.
字符串会被看做是由字符组成的数组,所以可以通过string[index]的形式来进行访问.
1
2
3
4
|
In [
28
]: site5
=
"www.flydean.com"
In [
29
]: site5[
3
]
Out[
29
]:
'.'
|
如果索引是负数的话,会从右边开始计数:
1
2
|
In [
30
]: site5[
-
3
]
Out[
30
]:
'c'
|
因为-0 和 0 是一样的,所以负数是从 -1 开始的.
除了索引,字符串还支持 切片。索引可以得到单个字符,而 切片 可以获取子字符串
1
2
|
In [
31
]: site5[
1
:
5
]
Out[
31
]:
'ww.f'
|
注意切片的开始总是被包括在结果中,而结束不被包括。这使得 s[:i] + s[i:] 总是等于 s 。
1
2
|
In [
33
]: site5[:
4
]
+
site5[
4
:]
Out[
33
]:
'www.flydean.com'
|
切片的索引有默认值,省略开始索引时默认为0.
如果索引超出了字符串的范围就会发送越界错误.
1
2
3
4
5
6
7
|
In [
34
]: site5[
100
]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
IndexError Traceback (most recent call last)
<ipython
-
input
-
34
-
fc1f475f725b>
in
<module>()
-
-
-
-
>
1
site5[
100
]
IndexError: string index out of
range
|
但是,切片中的越界索引会被自动处理
1
2
|
In [
36
]: site5[:
100
]
Out[
36
]:
'www.flydean.com'
|
因为字符串是不可变的,所以我们不能通过索引的形式来对字符串进行修改:
1
2
3
4
5
6
7
|
In [
37
]: site[
2
]
=
"A"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
TypeError Traceback (most recent call last)
<ipython
-
input
-
37
-
9147d44bd80c
>
in
<module>()
-
-
-
-
>
1
site[
2
]
=
"A"
TypeError:
'str'
object
does
not
support item assignment
|
len用来统计字符串的长度:
1
2
|
In [
38
]:
len
(site5)
Out[
38
]:
15
|
字符串的本质是字符串对象str.
可以看下str的基本方法:
1
2
3
4
5
|
In [
39
]: site5.
capitalize() encode()
format
() isalpha() islower() istitle() lower() replace() rpartition() splitlines() title()
casefold() endswith() format_map() isdecimal() isnumeric() isupper() lstrip() rfind() rsplit() startswith() translate()
center() expandtabs() index() isdigit() isprintable() join() maketrans() rindex() rstrip() strip() upper()
count() find() isalnum() isidentifier() isspace() ljust() partition() rjust() split() swapcase() zfill()
|
感兴趣的同学可以自行去研究.
列表是用方括号表示的数据的集合。列表中的数据可以是多种数据类型,但是一般情况下,我们在一个列表中使用同一个数据类型.
1
2
3
4
|
In [
40
]: ages
=
[
10
,
14
,
18
,
20
,
25
]
In [
41
]: ages
Out[
41
]: [
10
,
14
,
18
,
20
,
25
]
|
和字符串一样,列表也支持索引和切片。事实上,只要是 sequence 类型的数据类型,都支持索引和切片.
1
2
3
4
5
6
7
8
|
In [
42
]: ages[
3
]
Out[
42
]:
20
In [
43
]: ages[:
2
]
Out[
43
]: [
10
,
14
]
In [
44
]: ages[:]
Out[
44
]: [
10
,
14
,
18
,
20
,
25
]
|
注意,列表的切片会返回一个新的列表。但是这个新的列表是浅拷贝,意味着新列表的元素是原列表中元素的引用.
列表还支持拼接操作:
1
2
|
In [
45
]: ages
+
[
9
,
11
]
Out[
45
]: [
10
,
14
,
18
,
20
,
25
,
9
,
11
]
|
和String的不可变性不同,列表是可变的,这就意味着我们可以通过索引来修改列表的值:
1
2
3
4
|
In [
46
]: ages[
0
]
=
100
In [
47
]: ages
Out[
47
]: [
100
,
14
,
18
,
20
,
25
]
|
列表的底层类型是list,我们可以看下list中的方法:
1
2
3
4
|
In [
51
]: ages.
append() count() insert() reverse()
clear() extend() pop() sort()
copy() index() remove()
|
我们可以使用append来附加list的值,也可以使用count来统计list的元素个数等等.
上面我们提到了,列表的切片是原列表的引用,所以我们可以通过给切片赋值,来修改原始列表的值:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
>>> letters
=
[
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
,
'g'
]
>>> letters
[
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
,
'g'
]
>>>
# replace some values
>>> letters[
2
:
5
]
=
[
'C'
,
'D'
,
'E'
]
>>> letters
[
'a'
,
'b'
,
'C'
,
'D'
,
'E'
,
'f'
,
'g'
]
>>>
# now remove them
>>> letters[
2
:
5
]
=
[]
>>> letters
[
'a'
,
'b'
,
'f'
,
'g'
]
>>>
# clear the list by replacing all the elements with an empty list
>>> letters[:]
=
[]
>>> letters
[]
|
列表还可以进行嵌套,构建多层的列表:
1
2
3
4
5
6
7
8
9
|
>>> a
=
[
'a'
,
'b'
,
'c'
]
>>> n
=
[
1
,
2
,
3
]
>>> x
=
[a, n]
>>> x
[[
'a'
,
'b'
,
'c'
], [
1
,
2
,
3
]]
>>> x[
0
]
[
'a'
,
'b'
,
'c'
]
>>> x[
0
][
1
]
'b'
|
到此这篇关于Python入门基础之数字字符串与列表的文章就介绍到这了,更多相关Python数字字符串与列表内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:http://www.flydean.com/03-python-number-list-string/ 。
最后此篇关于Python入门基础之数字字符串与列表的文章就讲到这里了,如果你想了解更多关于Python入门基础之数字字符串与列表的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
如何使用 SPListCollection.Add(String, String, String, String, Int32, String, SPListTemplate.QuickLaunchO
我刚刚开始使用 C++ 并且对 C# 有一些经验,所以我有一些一般的编程经验。然而,似乎我马上就被击落了。我试过在谷歌上寻找,以免浪费任何人的时间,但没有结果。 int main(int argc,
这个问题已经有答案了: In Java 8 how do I transform a Map to another Map using a lambda? (8 个回答) Convert a Map>
我正在使用 node + typescript 和集成的 swagger 进行 API 调用。我 Swagger 提出以下要求 http://localhost:3033/employees/sear
我是 C++ 容器模板的新手。我收集了一些记录。每条记录都有一个唯一的名称,以及一个字段/值对列表。将按名称访问记录。字段/值对的顺序很重要。因此我设计如下: typedef string
我需要这两种方法,但j2me没有,我找到了一个replaceall();但这是 replaceall(string,string,string); 第二个方法是SringBuffer但在j2me中它没
If string is an alias of String in the .net framework为什么会发生这种情况,我应该如何解释它: type JustAString = string
我有两个列表(或字符串):一个大,另一个小。 我想检查较大的(A)是否包含小的(B)。 我的期望如下: 案例 1. B 是 A 的子集 A = [1,2,3] B = [1,2] contains(A
我有一个似乎无法解决的小问题。 这里...我有一个像这样创建的输入... var input = $(''); 如果我这样做......一切都很好 $(this).append(input); 如果我
我有以下代码片段 string[] lines = objects.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.No
这可能真的很简单,但我已经坚持了一段时间了。 我正在尝试输出一个字符串,然后输出一个带有两位小数的 double ,后跟另一个字符串,这是我的代码。 System.out.printf("成本:%.2
以下是 Cloud Firestore 列表查询中的示例之一 citiesRef.where("state", ">=", "CA").where("state", "= 字符串,我们在Stack O
我正在尝试检查一个字符串是否包含在另一个字符串中。后面的代码非常简单。我怎样才能在 jquery 中做到这一点? function deleteRow(locName, locID) { if
这个问题在这里已经有了答案: How to implement big int in C++ (14 个答案) 关闭 9 年前。 我有 2 个字符串,都只包含数字。这些数字大于 uint64_t 的
我有一个带有自定义转换器的 Dozer 映射: com.xyz.Customer com.xyz.CustomerDAO customerName
这个问题在这里已经有了答案: How do I compare strings in Java? (23 个回答) 关闭 6 年前。 我想了解字符串池的工作原理以及一个字符串等于另一个字符串的规则是
我已阅读 this问题和其他一些问题。但它们与我的问题有些无关 对于 UILabel 如果你不指定 ? 或 ! 你会得到这样的错误: @IBOutlet property has non-option
这两种方法中哪一种在理论上更快,为什么? (指向字符串的指针必须是常量。) destination[count] 和 *destination++ 之间的确切区别是什么? destination[co
This question already has answers here: Closed 11 years ago. Possible Duplicates: Is String.Format a
我有一个Stream一个文件的,现在我想将相同的单词组合成 Map这很重要,这个词在 Stream 中出现的频率. 我知道我必须使用 collect(Collectors.groupingBy(..)
我是一名优秀的程序员,十分优秀!