Python练习:元组和列表

题目1

有如下的代码,定义了一个Python列表 变量

var1 = [ 33, ['我的名字', '黑羽白月'], 'hello world!']

请接下来写一行代码,打印出var1这个列表变量里面的 字符串 hello world!

答案与解析




题目2

有如下的代码,定义了一个Python列表 变量

var1 = [ 33, ['我的名字', '黑羽白月'], 'hello world!']

请接下来写一行代码,打印出var1这个列表变量里面的 人名字 黑羽白月

答案与解析




题目3

有如下的代码,定义了一个Python列表 变量

var1 = [ 33, ['我的名字', '黑羽白月'], 'hello world!']

请分别用一行代码,实现:

  • 修改var1这个列表变量里面的 hello world!Oh my God!
  • 修改var1这个列表变量里面的 人名字 黑羽白月拜月童子

答案与解析




题目4

有如下的代码,定义了一个Python列表 变量

var1 = [ 33, ('我的名字', '黑羽白月'), 'hello world!']

请接下来写一行代码, 修改var1这个列表变量里面的 人名字 黑羽白月拜月童子

答案与解析




题目5

判断一下,下面的 代码,执行后打印出的结果是 hello, 还是 ok

def func(arg):
    arg = 'hello'

var = 'ok'
func(var)
print(var)




判断一下,下面的 代码,执行后打印出的结果是 [‘hello’], 还是 [‘ok’]

def func(arg):
    arg[0] = 'hello'

var = ['ok']
func(var)
print(var)



判断一下,下面的 代码,执行后打印出的结果是 [‘hello’], 还是 [‘ok’]

def func(arg):
    arg = ['hello']

var = ['ok']
func(var)
print(var)

答案与解析

















































题目1-答案

有如下的代码,定义了一个Python列表 变量

var1 = [ 33, ['我的名字', '黑羽白月'], 'hello world!']

请接下来写一行代码,打印出var1这个列表变量里面的 字符串 hello world!

分析

这个字符串是列表的最后一个元素,也可以说是列表的第3个元素

我们可以这样打印

print(var1[-1])

也可以这样打印

print(var1[2])



题目2-答案

有如下的代码,定义了一个Python列表 变量

var1 = [ 33, ['我的名字', '黑羽白月'], 'hello world!']

请接下来写一行代码,打印出var1这个列表变量里面的 人名字 黑羽白月

分析

这个人名字是列表的第2个元素(第2个元素本身也是列表) 里面的第二个元素

我们可以这样打印

print(var1[1][1])



题目3-答案

有如下的代码,定义了一个Python列表 变量

var1 = [ 33, ['我的名字', '黑羽白月'], 'hello world!']

请分别用一行代码,实现:

  • 修改var1这个列表变量里面的 hello world!Oh my God!
  • 修改var1这个列表变量里面的 人名字 黑羽白月拜月童子

分析

列表是可变数据类型,因为列表中的元素是可以被替换的。

  • 修改var1这个列表变量里面的 hello world!Oh my God!

      var1[-1] = 'Oh my God!'
    
  • 修改var1这个列表变量里面的 人名字 黑羽白月拜月童子

      var1[1][1] = '拜月童子'
    



题目4-答案

有如下的代码,定义了一个Python列表 变量

var1 = [ 33, ('我的名字', '黑羽白月'), 'hello world!']

请接下来写一行代码, 修改var1这个列表变量里面的 人名字 黑羽白月拜月童子

分析

元组(Tuple)是不可变数据类型,我们不能这样修改

var1[1][1] = '拜月童子'

因为 var1[1] 对应的正是里面的第2个元组对象。

要修改其内容, 只有把var1 这个列表对象的整个第2个元组对象替换掉。 因为列表的元素是可以修改的。

所以,可以这样

var1[1] = ('我的名字', '拜月童子')



题目5-答案

判断一下,下面的 代码,执行后打印出的结果是 hello, 还是 ok

def func(arg):
    arg = 'hello'

var = 'ok'
func(var)
print(var)

答: 还是 ‘ok’ 。

var = 'ok'

这行代码让变量var 指向了 字符串对象 ‘ok’



func(var)

这行代码调用函数,首先让参数变量arg也指向了 字符串对象 ‘ok’

后面函数里面执行

arg = 'hello'

让参数变量arg指向关系发生了改变,它指向了另一个字符串对象 ‘hello’

但是,这不会改变 var指向的对象, var还是指向 字符串对象 ‘ok’

所以调用完后, print(var) 的结果,还是 ‘ok’





判断一下,下面的 代码,执行后打印出的结果是 [‘hello’], 还是 [‘ok’]

def func(arg):
    arg[0] = 'hello'

var = ['ok']
func(var)
print(var)

答: 是[‘hello’] 。

var = ['ok']

这行代码让变量var 指向了 列表对象 [‘ok’]



func(var)

这行代码调用函数,首先让参数变量arg也指向了 列表对象 [‘ok’]



后面函数里面执行

arg[0] = 'hello'

列表对象因为这行代码 发生了改变。

注意:是变量 arg 指向的列表对象 本身改变了,不是变量 arg 指向关系 发生改变。

所以 外面的 全局变量 var也指向这个列表对象, 列表对象本身改变,自然var 对应的值 也改变了。




判断一下,下面的 代码,执行后打印出的结果是 [‘hello’], 还是 [‘ok’]

def func(arg):
    arg = ['hello']

var = ['ok']
func(var)
print(var)

答: 是[‘ok’] 。

var = ['ok']

这行代码让变量var 指向了 列表对象 [‘ok’]



func(var)

这行代码调用函数,首先让参数变量arg也指向了 列表对象 [‘ok’]



后面函数里面执行

arg= ['hello']

让参数变量arg指向关系发生了改变,它指向了 另一个 列表对象 [‘hello’]

但是,这不会改变 var指向的对象, var还是指向 列表对象 [‘ok’]

所以调用完后, print(var) 的结果,还是 [‘ok’]