【问题标题】:Trying to understand the length of the list [PYTHON]试图了解列表的长度 [PYTHON]
【发布时间】:2020-09-07 20:58:07
【问题描述】:

我正在学习 python,目前我专注于列表。 我正在阅读的书使用此代码作为示例来创建第三个列表,它不会重复两个列表中存在的元素:

first = []
second = []
while True:
    e = int(input("Enter a value for the first list (0 to end):")) 
    if e==0:
        break
    first.append(e)
while True:
    e = int(input("Enter a value for the second list (0 to finish):")) 
    if e==0:
        break
    second.append(e)
third = []

two_lists = first[:]
two_lists.extend(second)
x=0
while x < len(two_lists):
    y = 0
    while y < len(third): #**THIS LINE IS MY QUESTION**
        if two_lists[x] == third[y]:
            break;
        y=y+1
    if y == len(third):
        third.append(two_lists[x])
    x=x+1
x=0
while x < len(third):
    print(third[x])
    x=x+1

所以,当他说 while y 我不明白为什么 len(third) 是 1 而不是 0,因为 third 在 while 部分之前设置为空。有什么我遗漏的吗?

谢谢。

【问题讨论】:

  • third 以空列表(未设置)开始,但在外部循环的迭代过程中填充
  • 顺便说一句,这真的不是pythonic代码
  • 友情建议:找一本新书。快的!去。现在。
  • 我建议不要使用用户输入代码让您的生活变得艰难,而是使用几个预定义的列表进行开发和测试,例如first = [1, 2, 3]。 (顺便说一句,您的问题被标记为python,无需在标题中添加[PYTHON]) - 在第一次迭代中,该循环被跳过,但一旦将内容添加到third,它就可以运行。
  • 正如@Chris_Rands 所说,这不是 Pythonic 代码,并且正如 S3DEV 所建议的那样,我鼓励您寻找其他资源来学习

标签: python python-3.x list


【解决方案1】:

在第 18 行循环的第一次迭代中,len(third) 确实是 0不是 1

所以我们不进入第 20 行的 while 循环,而是进入第 24 行的 if 子句,只有从 len(third) 的那部分开始才是正数。

【讨论】:

  • 哦!我得到它!我以为他会跳过while循环,直接进入第二个while循环,在第28行。
【解决方案2】:

第一次遇到 while 循环时确实如此。

但是,外部循环填充第三个列表。

【讨论】:

  • 多处错误,python列表是可变的,空列表的长度为0
  • 考虑:l = [],然后是 len(l),将为 0。然后,l.append(1)。您会发现列表可变的,而空列表的长度为 0。
【解决方案3】:

第一次迭代的第三个长度应该是0,这样整个while循环就会被跳转。 然后下面的 if 语句将测试 true,因为 0 等于 0,然后将一个元素添加到您的第三个数组中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多