Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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_Python 3.x - Fatal编程技术网

Python 为什么我不能在for循环中将两个列表解压成一个格式字符串?

Python 为什么我不能在for循环中将两个列表解压成一个格式字符串?,python,python-3.x,Python,Python 3.x,我试着用“\\\;/-”做一个基本的旋转动画,效果很好,但我想要两个在同一条更新线上。一个顺时针旋转,一个逆时针旋转 以下是我的想法: animation_1 = ['\\', '|', '/', '-'] animation_2 = ['/', '|', '\\', '-'] while True: for iteration_1, iteration_2 in animation_1, animation_2: print(f'\r {iteration_2}

我试着用“\\\;/-”做一个基本的旋转动画,效果很好,但我想要两个在同一条更新线上。一个顺时针旋转,一个逆时针旋转

以下是我的想法:

animation_1 = ['\\', '|', '/', '-']
animation_2 = ['/', '|', '\\', '-']

while True:
    for iteration_1, iteration_2 in animation_1, animation_2:
        print(f'\r    {iteration_2}  {iteration_1}', end='')
        sleep(.5)
        sys.stdout.flush()
其中获得输出:

“回溯(最近一次呼叫最后一次):
文件“/Users/pungkrock/PycharmProjects/ans/fib.py”,第18行,在
对于动画_1、动画_2中的迭代_1、迭代_2:
ValueError:要解压缩的值太多(应为2)”
这个例子:

animation_1 = ['\\', '|', '/', '-']
animation_2 = ['/', '|', '\\', '-']

while True:
    for iteration_1, iteration_2 in animation_1:
        print(f'\r    {iteration_2}  {iteration_1}', end='')
        sleep(.5)
        sys.stdout.flush()
获取输出:

“回溯(最近一次呼叫最后一次):
文件“/Users/pungkrock/PycharmProjects/ans/fib.py”,第18行,在
对于迭代_1,动画_1中的迭代_2:
ValueError:没有足够的值来解包(应为2,得到1)”
我理解这个错误。但是我不明白为什么我从第一个示例中得到错误消息

这个例子很好:

animation_1 = ['\\', '|', '/', '-']
# animation_2 = ['/', '|', '\\', '-']

while True:
    for iteration_1 in animation_1:
        print(f'\r      {iteration_1}', end='')
        sleep(.5)
        sys.stdout.flush()
能不能有一个善良的灵魂向我解释一下第一个代码示例是如何不起作用的?或者如果我对语言的一些概念缺乏基本的理解? “太多的值无法解包(预期为2)”,是否得到2?我错过了什么

>>> for x in range(4):
...   print(animation_1[x],animation_1[3-x])
...
\ -
| /
/ |
- \

对不起,没什么解释,我也是新来的
在动画_1中,动画_2
的语法无效

我想你是想把拉链拉上

for a1, a2 in zip(animation_1, animation_2)
我不明白为什么从第一个示例中得到错误消息

好的,让我们来看看。相关的部分是,您有两个长度为4的列表,然后您尝试使用以下内容对这两个列表进行迭代:

a=[1,2,3,4]
b=[5,6,7,8]
对于a,b中的i,j:
...
我将使用此代码作为示例,因为它稍微简单一些。有两个关键点:

  • a,b
    创建一个包含两个列表的元组。这与您编写的
    (a,b)
    相同
  • 对于i,j在某物中
    仅当
    某物的每个元素都是长度为2的序列时才起作用

从这里开始,它非常简单:元组
(a,b)
的元素只是
a
b
本身,它们是长度为4的序列,而不是长度为2的序列。所以,这就是为什么有太多的值需要解包:4太多了。

您只是缺少了函数
zip
,如`对于迭代1,zip中的迭代2(动画1,动画2):…`那么最后,这个问题变成了这个问题的重复,这是否回答了您的问题?它是有效的语法;它创建一个元组
(animation\u 1,animation\u 2)
,并在该元组上迭代。“太多值无法解包”错误是因为该元组的每个元素不是长度为2的序列。谢谢,先生!你需要使用zip函数,我会记住这一点。我真的很感激@kaya3请随时提供您自己的答案