Python 如何继续for循环直到满足条件?
我想循环,直到它满足条件。在这种情况下,我想继续,直到列表Python 如何继续for循环直到满足条件?,python,Python,我想循环,直到它满足条件。在这种情况下,我想继续,直到列表 ["one","one","two","two","three","three","four","four","five","five","six","seven","eight"
["one","one","two","two","three","three","four","four","five","five","six","seven","eight","nine","ten"]
lst =["one","two","three","four","five","six","seven","eight","nine","ten”]
List_list = list()
for rn in lst:
List_list.append(rn)
if 15 == len(List_list):
break
您可以使用while循环:
lst=[1,2,3,4,5,6,7,8,9,10]
i = 0
List_list=[]
while len(List_list) < 15:
List_list.append(lst[i%10])
i+=1
这将适用于所有列表长度和任何最大长度Ask#2:
重复前5项,然后重复下5项的单个实例的解决方案
lst =["one","two","three","four","five","six","seven","eight","nine","ten"]
List_list = []
for i in range(10):
List_list.append(lst[i])
if i < 5:
List_list.append(lst[i])
print (List_list)
如果您正在使用列表理解寻找单行答案,那么您可以使用此选项
List_list = [y for x in lst[:5] for y in [x,x]] + [x for x in lst[5:]]
print (List_list)
输出相同:
['one', 'one', 'two', 'two', 'three', 'three', 'four', 'four', 'five', 'five', 'six', 'seven', 'eight', 'nine', 'ten']
问#1:
前面问题的解决方案:向列表中添加15项:原始列表中的所有10项+原始列表中的第一项
您可以做如下简单的事情:
List_lst = lst + lst[:5]
print (List_lst)
如果您仍然坚持使用for循环,并且您想要15项,那么这样做,它将为您提供相同的输出
List_list = list()
for i in range(15):
List_list.append(lst[i%10])
print (List_list)
此列表的理解版本为:
['one', 'one', 'two', 'two', 'three', 'three', 'four', 'four', 'five', 'five', 'six', 'seven', 'eight', 'nine', 'ten']
List_list = [lst[i%10] for i in range(15)]
print (List_list)
如果要使用while循环修复代码,请参阅下面的详细信息
将for循环转换为,而True:
。使用计数器i
开始迭代,并检查mod of 10以获得要插入的位置
lst = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"]
List_list = list()
i = 0
while True:
List_list.append(lst[i%10])
i+=1
if len(List_list) == 15:
break
print (List_list)
这将导致
["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "one", "two", "three", "four", "five"]
使用:
编辑2:补充了更新问题的答案 使用Python标准库,可以分三步完成(步骤1和步骤2可以结合使用):
cycle
函数创建原始列表的无限迭代器islice
函数从无限迭代器中获取前15个元素来自itertools导入周期,islice
lst=[“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”]
无限循环=循环(lst)
列表=列表(islice(无限大,15))
List_List.sort(key=lst.index)
打印(列表)
这里有:
['one', 'one', 'two', 'two', 'three', 'three', 'four', 'four', 'five', 'five', 'six', 'seven', 'eight', 'nine', 'ten']
这似乎是一个简单的模10循环
lst =["01.one","02.two","03.three","04.four","05.five","06.six","07.seven","08.eight","09.nine","10.ten"]
[w[3:] for w in sorted([lst[n%10] for n in range(15)])]
输出
[“一”、“一”、“二”、“二”、“三”、“三”、“四”、“四”、“五”、“五”、“六”、“七”、“八”、“九”、“十”][“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”、“一”、“二”、“三”、“四”、“五”]
["one","two","three","four","five","six","seven","eight","nine","ten","one","two","three","four","five"]
lst =["one","two","three","four","five","six","seven","eight","nine","ten"]
List_list = []
length = 0
# Respect the looping statement
while length<15:
List_list.append(lst[length%10])
length+=1
print(List_list)
#Output ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'one', 'two', 'three', 'four', 'five']
lst=[“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”]
List_List=[]
长度=0
#尊重循环语句
虽然length我同意这个答案中的第二个代码并不复杂,因为它更容易为任何其他代码复制。最好的程序员创建的代码在任何情况下都可以复制,最好的。使用while循环,然后数到15。或者,使用范围为15的for循环,使用mod 10(i%10)迭代循环,将给出索引在列表中的位置。这样你就可以得到位置并追加。你的if语句永远不会被满足,因为lst只有10项。请以后在回答问题后不要更改它。您的编辑已使此处的大多数答案无效。如果此问题被删除,欢迎您再次发布最后一个问题。但这一次,请提供更多细节(只有在阅读了接受答案下的评论后,我才理解您真正想要什么)。由于原来的问题有好几个重复的,你不必再发帖了。例如,请参见:.ur code不做任何事情rn
未定义只需在末尾添加print(List\u List)
。即使编辑后您的代码仍然错误,len(lst)
给出一个无限循环,它应该是len(List\u List)
,并且输出不是要求的。仍然错误。len(lst)将永远是你能做到的,所以它看起来像[“一”,“一”,“二”,“三”,“三”,“四”,“四”,“五”,“五”,“六”,“七”,“八”,“九”,“十”]是的。那很容易。让我给你一个这样的版本。我强烈建议你自己尝试一下,看看这些程序中是否有一个可以扩展以获得结果。现在,我已经更新了答案,给你想要的结果。它没有像我想要的那样迭代:(@Joe FerndzCan我可以这样附加它['1','1','2','2','3','3','4','4','5','5','6','7','8','9','10']是的,你使用输出。附加(项)
两次,然后设置len(输出)
到=30
。我不太明白,你能编辑你的答案吗?你想要和你上面提到的一样的精确输出吗?@EegiiEnkhtaivan检查更新的答案。你能这样做吗它看起来像['1','1','2','2','3','4','5','6','7','8','9','10']已修复按整型名称排序。。。
lst =["01.one","02.two","03.three","04.four","05.five","06.six","07.seven","08.eight","09.nine","10.ten"]
[w[3:] for w in sorted([lst[n%10] for n in range(15)])]
["one","two","three","four","five","six","seven","eight","nine","ten","one","two","three","four","five"]
lst =["one","two","three","four","five","six","seven","eight","nine","ten"]
List_list = []
length = 0
# Respect the looping statement
while length<15:
List_list.append(lst[length%10])
length+=1
print(List_list)
#Output ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'one', 'two', 'three', 'four', 'five']