鱼C论坛

 找回密码
 立即注册
查看: 2846|回复: 13

求助,关于list函数里的元素重复赋值的问题。

[复制链接]
发表于 2016-10-26 20:37:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
family = ["dad:", "2", "mom:", "1", "son:", "0"]
name = ["Bob", "Lucy", "Peter"]


def printfamily():
    for i in range(len(family)):
            if i%2 == 1:
                family[i] = name[int(family[i])]
            print(family[i], end=" ")
            print
printfamily()
printfamily()


以上这个函数,当printfamily() 只出现一次的时候是可以执行的,但是一次以上就不行了,因为第二次已经赋值了已经不是一个数字了,如何解决才能够使函数多次执行不报错。谢谢大家。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-26 20:54:35 | 显示全部楼层
  1. family = ["dad:", "2", "mom:", "1", "son:", "0"]
  2. name = ["Bob", "Lucy", "Peter"]


  3. def printfamily():
  4.     for i in range(len(family)):
  5.             if i%2 == 1:
  6.                 family[i] = name[int(family[i])]
  7.             print(family[i], end=" ")
  8.             print
  9. printfamily()
  10. printfamily()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-26 20:55:11 | 显示全部楼层
代码在二楼。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-26 21:44:25 | 显示全部楼层
有什么用?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-26 21:55:05 | 显示全部楼层

用户可能会多次执行。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-26 22:05:34 | 显示全部楼层
真的没人鸟我吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-26 22:29:20 | 显示全部楼层
因为在函数中修改了family所以无法第二次运行。
可以修改为
  1. family = ["dad:", "2", "mom:", "1", "son:", "0"]
  2. family2 = ["dad:", "2", "mom:", "1", "son:", "0"]
  3. name = ["Bob", "Lucy", "Peter"]


  4. def printfamily():
  5.     for i in range(len(family)):
  6.             if i%2 == 1:
  7.                 family2[i] = name[int(family[i])]
  8.             print(family2[i], end=" ")
  9.             print
  10. printfamily()
  11. printfamily()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-26 22:34:36 | 显示全部楼层
冬雪雪冬 发表于 2016-10-26 22:29
因为在函数中修改了family所以无法第二次运行。
可以修改为

还有其他方法吗?这个方法有点暴力。。只能定义一个family。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-26 22:39:56 | 显示全部楼层
verylam 发表于 2016-10-26 22:34
还有其他方法吗?这个方法有点暴力。。只能定义一个family。
  1. family = ["dad:", "2", "mom:", "1", "son:", "0"]
  2. name = ["Bob", "Lucy", "Peter"]


  3. def printfamily():
  4.     for i in range(0, len(family), 2):
  5.             print(family[i], end=" ")
  6.             print(name[int(family[i + 1])], end = ' ')
  7.     print()
  8. printfamily()
  9. printfamily()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-26 23:34:39 | 显示全部楼层
本帖最后由 verylam 于 2016-10-27 00:27 编辑


谢谢。
那如果将family改成family = [["my", "tall", "fat", "dad", "2", ], ["my", "beautiful", "mom", "1", ], ["me", "0", ]],
且打印出来保留[]符号,应该怎么改?


以下是打印结果:

["my", "tall", "fat", "dad", "Peter" ]
["my", "beautiful", "mom", "Lucy" ]
["me", "Bob" ]

就是前面的元素不改,只改最后的元素,同时保证能够多次执行函数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-27 09:40:44 | 显示全部楼层
verylam 发表于 2016-10-26 23:34
谢谢。
那如果将family改成family = [["my", "tall", "fat", "dad", "2", ], ["my", "beautiful", "mo ...

保证能够多次执行函数就需要family不被改变,因此只能再建立一个副本来操作。
对于二维列表,看用for循环逐个按之前的方法处理,最后用for打印family[0]~family[3]即可,都是带[]的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-27 11:58:50 | 显示全部楼层
学习啦!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-27 19:16:03 | 显示全部楼层
冬雪雪冬 发表于 2016-10-27 09:40
保证能够多次执行函数就需要family不被改变,因此只能再建立一个副本来操作。
对于二维列表,看用for循 ...

谢谢了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-28 08:46:28 | 显示全部楼层
学习啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-23 13:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表