繁体   English   中英

使用功能和for循环反转列表项的内部顺序。

[英]Reversing inner sequence of list items using a function and for loop.

我需要帮助来理解给我带来很多麻烦的家庭作业。 我尝试了许多不同的方法来获得以下分配以产生所需的结果:

  1. 创建一个名为task_05.py的模块
  2. 创建一个名为flip_keys()的函数,该函数带有一个参数: 名为to_flip的列表。 假定此列表内部具有嵌套的,不变的序列,例如:[[1、2、3),'hello']
  3. 使用for循环循环列表并反转内部序列的顺序。 外部列表上的所有操作都必须对原始对象进行操作,以利用其可变性。 内部元素是不可变的,需要更换。
  4. 该函数应返回原始列表,其内部元素反转。

我的教授将通过将以下内容插入python shell来评估脚本的结果:

>>> LIST = [(1, 2, 3), 'abc']
>>> NEW = flip_keys(LIST)
>>> LIST is NEW
True
>>> print LIST
[(3, 2, 1), 'cba']

我不知道自己在做什么错,我的教授也没有回应。 学生们也没有回应,我已多次阅读材料以寻找答案。 东西没有在我的大脑中点击。

他提供了以下提示,我认为我在脚本中暗含了这些提示:

暗示

考虑如何访问或更改列表的值。 您已经在任务2中做到了!

暗示

为了更改to_flip中的值,您将需要某种方式来了解要更改的索引。 为此,请创建一个变量以充当计数器,并在循环中对其进行递增,例如:

对于iterable_object中的值,计数器= 0:

做一些计数器+ = 1现在考虑该计数器可以代表什么。 在此循环结束时,计数器==

len(iterable_object)

暗示

有关如何反转元组的想法,请在使用slice语法反转字符串时返回到先前的分配。

这是我的最新脚本,没有注释(因为在脚本起作用之前我不会写它们):

def flip_keys(to_flip):
    for loop_list in to_flip:
        to_flip = [to_flip[0][::-1], to_flip[1][::-1]]
        return to_flip

当我使用上面粘贴的命令测试脚本时,得到以下结果:

>>>LIST = [(1, 2, 3), 'abc']
>>>NEW = flip_keys(LIST)
>>>LIST is NEW 
False
>>>print flip_keys(LIST) 
[(3, 2, 1), 'cba']
>>>print LIST 
[(1, 2, 3), 'abc']

作业的目的是尝试可变性,我想我知道。 我面临的问题是LIST变量应该由该函数更新,但这从未发生。

以下内容应评估为True,而不是false。 然后打印存储在LIST常量中的反向列表值。

>>>LIST = [(1, 2, 3), 'abc']
>>>NEW = flip_keys(LIST)
>>>LIST is NEW False

请让我知道这是否足够的信息。 我在此上花费了太多时间,目前我的作业要迟到4天,并且没有得到教授或学生的支持(我已告知我的顾问)。

您正在从函数中返回一个新列表。 使用完整切片[:]分配对原始列表进行就地变异。

您还可以使用更传统的方式来创建列表- 列表理解 -代替for循环:

def flip_keys(to_flip):
    to_flip[:] = [i[::-1] for i in to_flip]
    return to_flip

测试

>>> LIST = [(1, 2, 3), 'abc']
>>> NEW = flip_keys(LIST)
>>> NEW
[(3, 2, 1), 'cba']
>>> NEW is LIST
True

国际海事组织,改变一个可变的论点并返回它并不觉得正确/传统。 这可以在您的下一堂课上进行很好的讨论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM