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))