【问题标题】:write code that prints out values in order from two seperate list编写代码,从两个单独的列表中按顺序打印出值
【发布时间】:2019-07-24 22:44:44
【问题描述】:

我有清单

num1 = [1, 3, 5]
num2 = [2, 4, 6]

我需要按顺序打印两个列表中从 1 到 6 的所有整数,而不使用排序或追加。我必须使用 for 循环和计数器。计数器应该用作指针。

我尝试了在 for 循环中使用 x 的不同方法,但似乎无法获得指向每个特定索引的 x 值

x=0
for num in num1: 
    if (num1 + num2)[x] > num:
        print num
    elif (num1 + num2)[x] < num:
        print num[x]
    else: x = x + 1

我希望我的输出是

1
2
3
4
5
6

但我继续收到错误消息

【问题讨论】:

  • 我在运行您的代码时没有收到错误消息,但我也没有得到输出。需要注意的几个问题:您的 for 循环将只有 3 次迭代,并且您在条件语句中的条件永远不会为真,因为 (num1 + num2)[x] 始终等于 num
  • 这里可能适合使用for 循环而不是for 循环。但是你为什么要避开sortappend
  • 在这个问题上,我们的教授希望我们专门使用 for 循环。并避免排序和追加,因为这将是一个简单的解决方案。他给了我们使用循环计数器并将计数器用作指针的提示。
  • num1 = [1, 3, 5] num2 = [2, 4, 6] num3 = num1 + num2 x = 0 #编写从两个列表中按顺序打印值的代码#不能使用对 num3 中的 num 进行排序或附加: if num1[x] > x: x = num1[x] elif num1[x]
  • 列表总是这样排列吗?例如,你会拥有num1 = [1, 5, 3]num2 = [6, 2, 4] 吗?

标签: python-2.7 for-loop counter


【解决方案1】:

虽然没有明确提及,但我相信这里的假设是列表 num1 和 num2 都已经排序。有了这个假设,实现这一目标的一种方法是同时遍历两个列表并继续打印较小的值。请参阅下面的示例。

num1 = [ 1, 3, 5, 7, 13, 17, 19]
num2 = [2, 4, 6, 8, 10]

l = num1
oth = num2
if len(num2) > len(num1):
    l = num2
    oth = num1
m = len(l)

i = 0
j = 0
while i < m:
    if j >= len(oth) or l[i] < oth[j]:
        print(l[i])
        i += 1
    else:
        print(oth[j])
        j += 1

while j < len(oth):
    print(oth[j])
    j += 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    相关资源
    最近更新 更多