Python列表习惯用法列表

Python列表习惯用法列表,python,Python,data2['C']是一个如下所示的列表: [['20120524', '26.31'], ['20120523', '26.08'], ['20120522', '26.52'], ['20120521', '25.75']] 我想编写一段代码,可以在d['C'][I][0]之间迭代,并找到与特定值(存储为YYYYMMDD的日期)对应的列表索引。我仍然觉得Python的for循环习惯用法令人困惑,我想澄清为什么第一块代码无效,而第二块代码有效。另外,如果有一个内置Python函数可以执行我描

data2['C']是一个如下所示的列表:

[['20120524', '26.31'], ['20120523', '26.08'], ['20120522', '26.52'], ['20120521', '25.75']]
我想编写一段代码,可以在d['C'][I][0]之间迭代,并找到与特定值(存储为YYYYMMDD的日期)对应的列表索引。我仍然觉得Python的for循环习惯用法令人困惑,我想澄清为什么第一块代码无效,而第二块代码有效。另外,如果有一个内置Python函数可以执行我描述的搜索过程,请与我们分享

不起作用:

>>> print data2['C'][i][0] for i in range(len(data2['C']))
 File "<stdin>", line 1
   print data2['C'][i][0] for i in range(len(data2['C']))
                           ^
SyntaxError: invalid syntax

问题是第一个代码是错误的,但第二个代码是错误的迭代器。python中的是迭代器,因此,您可以执行以下操作:

for i in data2['C']:
    print i[0]


for
可通过两种方式使用:在显式
for
循环中(如第二个代码块)或在列表/目录/生成器中:

注意括号
[]
表示列表、
{}
-一个dict和
()
中的
表示一个生成器表达式

要使输出与第二个相同,请执行以下操作

print '\n'.join([str(data2['C'][i][0]) for i in range(len(data2['C']))])
甚至

print '\n'.join(str(data2['C'][i][0]) for i in range(len(data2['C'])))

这将是一个。

“如果有一个内置的Python函数将…”如何:
用于数据2中的s['C']:打印s[0]
?如果以后需要
i
用于枚举中的i,s(数据2['C']):打印i,s[0]
这根本不起作用。range()返回从0到len(X)-1(包括边框)的整数列表。在这种情况下,i[0]没有意义。
print [data2['C'][i][0] for i in range(len(data2['C']))]
print '\n'.join([str(data2['C'][i][0]) for i in range(len(data2['C']))])
print '\n'.join(str(data2['C'][i][0]) for i in range(len(data2['C'])))