Python 使用“比较两个列表”;对于(0,7,1)范围内的;

Python 使用“比较两个列表”;对于(0,7,1)范围内的;,python,Python,我想比较两个列表,对于每个元素,首先放置最低的一个。 这是我的密码: l1=[1,14,26,37,100,86,77] l2=[2,13,27,38,99,85,78] newlist=[] for elementnr in range(0,7,1): if l1<=l2: newlist.append(l1[elementnr]) newlist.append(l2[elementnr]) else: if l1>

我想比较两个列表,对于每个元素,首先放置最低的一个。 这是我的密码:

l1=[1,14,26,37,100,86,77]
l2=[2,13,27,38,99,85,78]
newlist=[]

for elementnr in range(0,7,1):
    if l1<=l2:
        newlist.append(l1[elementnr])
        newlist.append(l2[elementnr])

    else:
        if l1>=2:
            newlist.append(l2[elementnr])
            newlist.append(l1[elementnr])
print(newlist)
只比较两个和两个数字,而不是整个列表

我的代码的问题是,这个新列表比较前两个数字,但它会在整个列表中从l1开始,然后是l2,而不是进行新的比较

提前感谢(这是可能的考试任务的练习,这就是为什么我不能使用min/max/sort函数等)

您应该进行比较

if l1[elementnr] <= l2[elementnr] ...
如果l1[elementnr]您应该比较

if l1[elementnr] <= l2[elementnr] ...

如果l1[elementnr]您总是比较整个列表,而不是单个元素

你可以做:

if l1[elementnr] <= l2[elementnr]

您总是比较整个列表,而不是单个元素

你可以做:

if l1[elementnr] <= l2[elementnr]

我知道你的标题是“使用范围内(0,7,1)”的,所以我希望这不是不受欢迎的。但这是一个非常不和谐的模式。如果您将使用
zip
和类似于
的东西来表示zip中的l1、l2(l1、l2):
这将更易于阅读,并降低您遇到的类型或错误的可能性

例如:

l1=[1,14,26,37,100,86,77]
l2=[2,13,27,38,99,85,78]
newlist=[]

for l1, l2 in zip(l1, l2):
    if l1<=l2:
        newlist.append(l1)
        newlist.append(l2)
    else:
        newlist.append(l2)
        newlist.append(l1)
print(newlist)

我知道你的标题是“使用范围内(0,7,1)”的,所以我希望这不是不受欢迎的。但这是一个非常不和谐的模式。如果您将使用
zip
和类似于
的东西来表示zip中的l1、l2(l1、l2):
这将更易于阅读,并降低您遇到的类型或错误的可能性

例如:

l1=[1,14,26,37,100,86,77]
l2=[2,13,27,38,99,85,78]
newlist=[]

for l1, l2 in zip(l1, l2):
    if l1<=l2:
        newlist.append(l1)
        newlist.append(l2)
    else:
        newlist.append(l2)
        newlist.append(l1)
print(newlist)

我已经尝试过了,但是我得到了一个错误:第21行,在l1[elementnr]>=2[elementnr]TypeError中:“int”对象不是subscriptableI我很确定它是旧代码/其他代码的产物。如果你看到这样的错误,请提供完整的代码片段,原来是else语句中的l1[elementnr]>=l2[elementnr]把程序搞砸了,现在如果l1[elementnr]我试过了,但是我得到了错误:第21行,在l1[elementnr]>=2[elementnr]TypeError:“int”对象不是subscriptableI我很确定它是旧代码/其他代码的产物。如果你看到这样的错误,请提供完整的代码片段,原来是else语句中的l1[elementnr]>=l2[elementnr]把程序搞砸了,现在如果l1[elementnr]可能我看错了,但是如果l1 2与else类似,那么比较:?因为没有可行的第三个选项?是的,它现在起作用了,必须从else中删除l1>=l2,然后添加l1[elementnr]可能我认为它错了,但是如果l1 2与else类似,那么比较:?因为没有可行的第三个选项?是的,它现在起作用了,必须从else中删除l1>=l2,然后添加l1[elementnr]Ye,问题是,我的课程使用python,但课程名为BasicProgramming,因此我们不允许使用特定于python的命令,但我始终欣赏提示:)我明白了,@Darmo,希望你能在几天内开始使用常规
for…in
。是的,问题是,我的课程使用python,但课程名为BasicProgramming,因此我们不允许使用特定于python的命令,但我总是很欣赏提示:)我明白,@Darmo,希望你能在几天内开始使用常规
for…in
from itertools import chain
l1=[1,14,26,37,100,86,77]
l2=[2,13,27,38,99,85,78]

l3 = chain(*sorted(zip(l1, l2)))
print(list(l3))