2012-02-01 144 views
1

可能重复指定变量值:
Is there any way to do variable assignments directly inside a while(<here>) loop in Python?if或while语句

对不起这样一个基本问题。我试图学习Python,但实际上还没有找到答案。

在Python中,我可以为whileif语句中的变量赋值吗?如果是这样,怎么样?

例如。我不得不这样做:

line_list = [] 
while True: 
    line = raw_input(">>> ") 
    if not line: break 
    line_list.append(line) 
print line_list 

,但我想这样做:

line_list = [] 
while line = raw_input(">>> "): 
    line_list.append(line) 
print line_list 

我看的教程没有提到这种或那种方式,但是这是一个大多数其他语言的常见结构。

+4

这是无法完成的。如果你搜索,你会发现你不是第一个要问的人。 “大多数其他语言中的共同结构”也是错误的。在C,C++和专门针对C类功能的语言中很常见。这不是*大多数*。 – 2012-02-01 20:11:38

回答

6

正如弗雷德里克的回答表明,这是不可能分配给一个变量的一个whileif,但是基本上可以做到使用iter()与功能/定点调用格式相同的事情:

for line in iter(lambda: raw_input(">>>"), ""): 
    line_list.append(line) 
+0

不错,我不知道这个构造! – kindall 2012-02-01 20:37:26

7

这是不可能的。 Python中的Assignments是语句,而不是表达式。

它们不会评估为已分配的值,也不会像其他语言中惯用的那样返回对被分配对象的引用。

0

你不这里不想使用while循环!无限地附加到列表中,一旦输入了某个输入并且“输入”被击中。

这应该工作:

while 1: 
    line = raw_input(">>> ") 
    if line: 
     line_list.append(line) 

当然,这是不一样的东西,但是它为你想要的东西,至于我可以告诉。