1. 程式人生 > >Python編程快速上手-讓繁瑣工作自動化 第四章 列表練習題及其答案

Python編程快速上手-讓繁瑣工作自動化 第四章 列表練習題及其答案

淺拷貝 insert 練習 append 編寫 nan 表達式 任務 nas

第四章 列表練習題及其答案

1、什麽是[]?

答:空的列表值,它是一個列表,不包含任何列表項。這類似於‘‘是空的字符串值。

2、如何將‘hello‘賦值給列表的第三個值,而列表保存在名為spam的變量中?(假設變量包含[2, 4, 6, 8, 10])

答:spam[2] = ‘hello‘(註意列表中的第3個值下標是2,因為第一個值下標是0。)

對接下來的3個問題,假定spam包含列表[‘a‘, ‘b‘, ‘c‘, ‘d‘]

3、spam[int(‘3‘*2)/11]求值為多少?

答:d(註意3*2是字符串33,它被傳入int(),然後再除以11。這最終求值為3.在使用值的地方,都可以使用表達式)。
>>> spam=[a, b, c, d] >>> spam[int(3*2)//11] d

4、spam[-1]求值為多少?

答:‘d‘(負數下標從末尾倒數)。

5、spam[:2]求值為多少?

答:
>>> spam
[a, b, c, d]
>>> spam[:2]
[a, b]

對接下來的3個問題。假定bacon包含列表[3.14,‘cat‘, 11, ‘cat‘, True]

6、bacon.index(‘cat‘)求值為多少?

答:
>>> bacon = [3.14, 
cat, 11, cat, True] >>> bacon.index(cat) 1 >>>

7、bacon.append(99)讓bacon中的列表值變成什麽樣?

>>> bacon = [3.14, cat, 11, cat, True]
>>> bacon.append(99)
>>> bacon
[3.14, cat, 11, cat, True, 99]
>>> 

8、bacon.remove(‘cat‘)讓bacon中的列表值變成什麽樣?

答:
>>> bacon [3.14, cat, 11, cat, True, 99] >>> bacon.remove(cat) >>> bacon [3.14, 11, cat, True, 99] >>>

9、列表連接和復制的操作符是什麽?

答:列表連接的操作符是+,復制的操作符是*(這和字符串一樣)。

10、append()和insert()列表方法之間的區別是什麽?

答:append()只會將值添加在列表的末尾,而insert()可以將值添加在列表的任何位置。

11、從列表中刪除值有哪兩種方法?

答:del語句和remove()列表方法是從列表中刪除值得兩種方法。

12、請說出列表值和字符串的幾點相似之處。

答:列表和字符串都可以傳入len(),都有下標和切片,用於for循環,連接或復制,並與in和not in操作符一起使用。

13、列表和元組之間的區別是什麽?

答:列表是可以修改的,它們可以添加值、刪除值和修改值。元組是不可修改的,它們根本不能改變。而且,元組使用的是括號,而列表使用的是方括號[]。

14、如果元組中只有一個整數值42,如何輸入該元組?

答:spam=(42,) 末尾的逗號是必須的。

15、如何從列表值得到元組形式?如何從元組值得到列表形式?

答:分別使用tuple()和list()函數。

16、"包含"列表的變量,實際上並未真正地直接包含列表。它們包含的是什麽?

答:它們包含對列表值得引用。

17、copy.copy()和copy.deepcopy()之間的區別是什麽?

答:copy.copy()函數將淺拷貝列表,而copy.deepcopy()函數將深拷貝列表。也就是說,只有copy.deepcopy()會復制列表內的所有列表。

4.10 實踐項目

作為實踐,編程完成下列任務。

4.10.1 逗號代碼

假定有下面這樣的列表:
spam = [‘apples‘, ‘bananans‘, ‘tofu‘, ‘cats‘]
編寫一個函數,它以一個列表值作為參數,返回一個字符串。該字符串包含所有表項,表項之間以逗號和空格分隔,
並在最後一個表項之前插入and。例如,將前面的spam列表傳遞給函數,將返回‘apples, bananas, tofu, and cats‘。
但你的函數應該能夠處理傳遞給它的任何列表。

"""
4.10 實踐項目
    作為實踐,編程完成下列任務。
4.10.1 逗號代碼
    假定有下面這樣的列表:
    spam = [‘apples‘, ‘bananans‘, ‘tofu‘, ‘cats‘]
編寫一個函數,它以一個列表值作為參數,返回一個字符串。該字符串包含所有表項,表項之間以逗號和空格分隔,
並在最後一個表項之前插入and。例如,將前面的spam列表傳遞給函數,將返回‘apples, bananas, tofu, and cats‘。
"""
spam = [apples, bananans, tofu, cats]
def list_str(lst):
        return ,.join(lst[:-1]+[and +lst[-1]])
a=list_str(spam)
print(a)

4.10.2 字符圖網絡

假定有一個列表的列表,內層列表的每個值都是包含一個字符的字符串,像這樣:
grid = [[‘.‘, ‘.‘, ‘.‘, ‘.‘, ‘.‘, ‘.‘],
[‘.‘, ‘O‘, ‘O‘, ‘.‘, ‘.‘, ‘.‘],
[‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘.‘, ‘.‘],
[‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘.‘],
[‘.‘, ‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘O‘],
[‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘.‘],
[‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘.‘, ‘.‘],
[‘.‘, ‘O‘, ‘O‘, ‘.‘, ‘.‘, ‘.‘],
[‘.‘, ‘.‘, ‘.‘, ‘.‘, ‘.‘, ‘.‘]]

你可以認為grid[x][y]是一副"圖"在x,y坐標處的字符,該圖由文本字符組成。原點(0,0)在左上角,向右x坐標增加,
向下y坐標增加。
復制前面的網格值,編寫代碼用它打印出圖像。
..OO.OO..
.OOOOOOO.
.OOOOOOO.
..OOOOO..
...OOO...
....O....

提示: 你需要使用循環嵌套循環,打印出grid[0][0],然後grid[1][0],然後grid[2][0],以此類推,
直到grid[8][0]。這就完成第一行,所以接下來打印換行。然後程序將打印出grid[0][1], 然後grid[1][1],然後grid[2][1],
以此類推。程序最後打印出grid[8][5]。
而且,如果你不希望在每次print()調用後都自動打印換行,記得向print()傳遞end關鍵字參數。

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# Author: davie
"""
4.10.2 字符圖網絡
    假定有一個列表的列表,內層列表的每個值都是包含一個字符的字符串,像這樣:
grid = [[‘.‘, ‘.‘, ‘.‘, ‘.‘, ‘.‘, ‘.‘],
[‘.‘, ‘O‘, ‘O‘, ‘.‘, ‘.‘, ‘.‘],
[‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘.‘, ‘.‘],
[‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘.‘],
[‘.‘, ‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘O‘],
[‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘.‘],
[‘O‘, ‘O‘, ‘O‘, ‘O‘, ‘.‘, ‘.‘],
[‘.‘, ‘O‘, ‘O‘, ‘.‘, ‘.‘, ‘.‘],
[‘.‘, ‘.‘, ‘.‘, ‘.‘, ‘.‘, ‘.‘]]

    你可以認為grid[x][y]是一副"圖"在x,y坐標處的字符,該圖由文本字符組成。原點(0,0)在左上角,向右x坐標增加,
向下y坐標增加。
    復制前面的網格值,編寫代碼用它打印出圖像。
..OO.OO..
.OOOOOOO.
.OOOOOOO.
..OOOOO..
...OOO...
....O....

提示:    你需要使用循環嵌套循環,打印出grid[0][0],然後grid[1][0],然後grid[2][0],以此類推,
直到grid[8][0]。這就完成第一行,所以接下來打印換行。然後程序將打印出grid[0][1], 然後grid[1][1],然後grid[2][1],
以此類推。程序最後打印出grid[8][5]。
    而且,如果你不希望在每次print()調用後都自動打印換行,記得向print()傳遞end關鍵字參數。
"""
grid = [[., ., ., ., ., .],
[., O, O, ., ., .],
[O, O, O, O, ., .],
[O, O, O, O, O, .],
[., O, O, O, O, O],
[O, O, O, O, O, .],
[O, O, O, O, ., .],
[., O, O, ., ., .],
[., ., ., ., ., .]]
list_len=len(grid)
list_col=len(grid[0])
for i in range(list_col):
        for j in range(list_len):
                print(grid[j][i],end=‘‘)
        print()

Python編程快速上手-讓繁瑣工作自動化 第四章 列表練習題及其答案