Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何继续for循环直到满足条件?_Python - Fatal编程技术网

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']