ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 17.04.2021
Просмотров: 3720
Скачиваний: 3

Introduction to Python for Science, Release 0.9.23
way than for lists. The elements of lists and arrays are numbered consecutively, and to
access an element of a list or an array, you simply refer to the number corresponding
to its position in the sequence. The elements of dictionaries are accessed by “keys”,
which can be either strings or (arbitrary) integers (in no particular order). Dictionaries
are an important part of core Python. However, we do not make much use of them in this
introduction to scientific Python, so our discussion of them is limited.
3.1 Strings
Strings are lists of characters. Any character that you can type from a computer keyboard,
plus a variety of other characters, can be elements in a string. Strings are created by
enclosing a sequence of characters within a pair of single or double quotes. Examples of
strings include
"Marylyn"
,
"omg"
,
"good_bad_#5f>!"
,
"{0:0.8g}"
, and
"We
hold these truths ..."
. Caution: the defining quotes must
both
be single or
both
be double quotes.
Strings can be assigned variable names
In [1]:
a
=
"My dog’s name is"
In [2]:
b
=
"Bingo"
Strings can be concatenated using the “
+
” operator:
In [3]:
c
=
a
+
" "
+
b
In [4]:
c
Out[4]:
"My dog’s name is Bingo"
In forming the string
c
, we concatenated
three
strings,
a
,
b
, and a
string literal
, in this
case a space
" "
, which is needed to provide a space to separate string
a
from
b
.
You will use strings for different purposes: labeling data in data files, labeling axes in
plots, formatting numerical output, requesting input for your programs, as arguments in
functions,
etc
.
Because numbers—digits—are also alpha numeric characters, strings can be made up of
numbers:
In [5]:
d
=
"927"
In [6]:
e
=
927
The variable
d
is a string while the variable
e
is an integer. What do you think happens if
you try to add them by writing
d+e
? Try it out and see if you understand the result.
30
Chapter 3. Strings, Lists, Arrays, and Dictionaries

Introduction to Python for Science, Release 0.9.23
3.2 Lists
Python has two data structures,
lists
and
tuples
, that consist of a list of one or more
elements. The elements of lists or tuples can be numbers or strings, or both. Lists (we will
discuss tuples later) are defined by a pair of
square
brackets on either end with individual
elements separated by commas. Here are two examples of lists:
In [1]:
a
=
[
0
,
1
,
1
,
2
,
3
,
5
,
8
,
13
]
In [2]:
b
=
[
5.
,
"girl"
,
2
+
0j
,
"horse"
,
21
]
We can access individual elements of a list using the variable name for the list with square
brackets:
In [3]:
b[
0
]
Out[3]:
5.0
In [4]:
b[
1
]
Out[4]:
’girl’
In [5]:
b[
2
]
Out[5]:
(
2
+
0j
)
The first element of
b
is
b[0]
, the second is
b[1]
, the third is
b[2]
, and so on. Some
computer languages index lists starting with 0, like Python and C, while others index
lists (or things more-or-less equivalent) starting with 1 (like Fortran and Matlab). It’s
important to keep in mind that Python uses the former convention: lists are
zero-indexed
.
The last element of this array is
b[4]
, because
b
has 5 elements. The last element can
also be accessed as
b[-1]
, no matter how many elements
b
has, and the next-to-last
element of the list is
b[-2]
,
etc
. Try it out:
In [6]:
b[
4
]
Out[6]:
21
In [7]:
b[
-
1
]
Out[7]:
21
In [8]:
b[
-
2
]
Out[8]:
’horse’
Individual elements of lists can be changed. For example:
In [9]:
b
Out[9]:
[
5.0
,
’girl’
, (
2
+
0j
),
’horse’
,
21
]
3.2. Lists
31

Introduction to Python for Science, Release 0.9.23
In [10]:
b[
0
]
=
b[
0
]
+
2
In [11]:
b[
3
]
=
3.14159
In [12]:
b
Out[12]:
[
7.0
,
’girl’
, (
2
+
0j
),
3.14159
,
21
]
Here we see that 2 was added to the previous value of
b[0]
and the string
’horse’
was replaced by the floating point number
3.14159
. We can also manipulate individual
elements that are strings:
In [13]:
b[
1
]
=
b[
1
]
+
"s & boys"
In [14]:
b
Out[14]:
[
10.0
,
’girls & boys’
, (
2
+
0j
),
3.14159
,
21
]
You can also add lists, but the result might surprise you:
In [15]:
a
Out[15]:
[
0
,
1
,
1
,
2
,
3
,
5
,
8
,
13
]
In [16]:
a
+
a
Out[16]:
[
0
,
1
,
1
,
2
,
3
,
5
,
8
,
13
,
0
,
1
,
1
,
2
,
3
,
5
,
8
,
13
]
In [17]:
a
+
b
Out[17]:
[
0
,
1
,
1
,
2
,
3
,
5
,
8
,
13
,
10.0
,
’girls & boys’
, (
2
+
0j
),
3.14159, 21]
Adding lists concatenates them, just as the “
+
” operator concatenates strings.
3.2.1 Slicing lists
You can access pieces of lists using the
slicing
feature of Python:
In [18]:
b
Out[18]:
[
10.0
,
’girls & boys’
, (
2
+
0j
),
3.14159
,
21
]
In [19]:
b[
1
:
4
]
Out[19]:
[
’girls & boys’
, (
2
+
0j
),
3.14159
]
In [20]:
b[
3
:
5
]
Out[20]:
[
3.14159
,
21
]
You access a subset of a list by specifying two indices separated by a colon “
:
”. This
32
Chapter 3. Strings, Lists, Arrays, and Dictionaries

Introduction to Python for Science, Release 0.9.23
is a powerful feature of lists that we will use often. Here are a few other useful slicing
shortcuts:
In [21]:
b[
2
:]
Out[21]:
[(
2
+
0j
),
3.14159
,
21
]
In [22]:
b[:
3
]
Out[22]:
[
10.0
,
’girls & boys’
, (
2
+
0j
)]
In [23]:
b[:]
Out[23]:
[
10.0
,
’girls & boys’
, (
2
+
0j
),
3.14159
,
21
]
Thus, if the left slice index is
0
, you can leave it out; similarly, if the right slice index is
the length of the list, you can leave it out also.
What does the following slice of an array give you?
In [24]:
b[
1
:
-
1
]
You can get the length of a list using Python’s
len
function:
In [25]:
len
(b)
Out[25]:
5
3.2.2 Creating and modifying lists
Python has functions for creating and augmenting lists. The most useful is the
range
function, which can be used to create a uniformly spaced sequence of integers. The
general form of the function is
range([start,] stop[, step])
, where the ar-
guments are all integers; those in square brackets are optional:
In [26]:
range
(
10
)
# makes a list of 10 integers from 0 to 9
Out[26]:
[
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
]
In [27]:
range
(
3
,
10
)
# makes a list of 10 integers from 3 to 9
Out[27]:
[
3
,
4
,
5
,
6
,
7
,
8
,
9
]
In [28]:
range
(
0
,
10
,
2
)
# makes a list of 10 integers from 0 to 9
# with increment 2
Out[28]:
[
0
,
2
,
4
,
6
,
8
]
You can add one or more elements to the beginning or end of a list using the “
+
” operator:
In [29]:
a
=
range
(
1
,
10
,
3
)
3.2. Lists
33

Introduction to Python for Science, Release 0.9.23
In [30]:
a
Out[30]:
[
1
,
4
,
7
]
In [31]:
a
+=
[
16
,
31
,
64
,
127
]
In [32]:
a
Out[32]:
[
1
,
4
,
7
,
16
,
31
,
64
,
127
]
In [33]:
a
=
[
0
,
0
]
+
a
In [34]:
a
Out[34]:
[
0
,
0
,
1
,
4
,
7
,
16
,
31
,
64
,
127
]
You can insert elements into a list using slicing:
In [35]:
b
=
a[:
5
]
+
[
101
,
102
]
+
a[
5
:]
In [36]:
b
Out[36]:
[
0
,
1
,
1
,
4
,
7
,
101
,
102
,
16
,
31
,
64
,
127
]
3.2.3 Tuples
Finally, a word about tuples: tuples are lists that are
immutable
. That is, once defined, the
individual elements of a tuple cannot be changed. Whereas a list is written as a sequence
of numbers enclosed in
square
brackets, a tuple is written as a sequence of numbers
enclosed in
round
parentheses. Individual elements of a tuple are addressed in the same
way as individual elements of lists are addressed, but those individual elements cannot be
changed. All of this illustrated by this simple example:
In [37]:
c
=
(
1
,
1
,
2
,
3
,
5
,
8
,
13
)
In [37]:
c[
4
]
Out[38]:
5
In [39]:
c[
4
]
=
7
---------------------------------------------------------------------------
TypeError: ’tuple’ object does not support item assignment
When we tried to change
c[4]
, the system returned an error because we are prohibited
from changing an element of a tuple. Tuples offer some degree of safety when we want
to define lists of immutable constants.
34
Chapter 3. Strings, Lists, Arrays, and Dictionaries