回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我在使用for循环处理列表列表时遇到了一个问题,for循环将列表元素分配给变量,而不是使用列表索引</p>
<p>下面的代码正确地处理列表,并确认每个子列表有5个元素,所有元素都是string类型,并且都有数据:</p>
<pre><code>for i, rec in enumerate(Wordpress_Post_List):
if i < 5:
if i == 0:
print(type(rec), ' --> ', len(rec))
print('record ',i)
print('0==', type(rec[0]), '==', rec[0])
print('1==', type(rec[1]), '==', rec[1])
print('2==', type(rec[2]), '==', rec[2])
print('3==', type(rec[3]), '==', rec[3])
print('4==', type(rec[4]), '==', rec[4])
</code></pre>
<p>但当我使用以下代码时:</p>
<pre><code>for i, rec in enumerate(Wordpress_Post_List):
if i < 5:
for li0,li1,li2,li3,li4 in rec:
print('0==', type(li0), '==', li0)
print('1==', type(li1), '==', li1)
print('2==', type(li2), '==', li2)
print('3==', type(li3), '==', li3)
print('4==', type(li4), '==', li4)
</code></pre>
<p>我得到错误:ValueError:没有足够的值来解包(预期值为5,实际值为2)</p>
<p>任何关于Python为什么要这样做的见解都将不胜感激</p>
<p>另外,以下代码也适用</p>
<pre><code>for i, rec in enumerate(Wordpress_Post_List):
if i < 5:
li0=rec[0]
li1=rec[1]
li2=rec[2]
li3=rec[3]
li4=rec[4]
print('0==', type(li0), '==', li0)
print('1==', type(li1), '==', li1)
print('2==', type(li2), '==', li2)
print('3==', type(li3), '==', li3)
print('4==', type(li4), '==', li4)
</code></pre>