Python 3 |在for循环中使用多个if语句?

Python 3 |在for循环中使用多个if语句?,python,if-statement,Python,If Statement,我找遍了,没有找到适合我需要的东西 我有三个for循环,每个循环中都有一个if条件。代码如下: for friend in friends: columns = friend.split("\n") if len(columns) == 4: c.execute("""INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `no_of_new_posts`, `already_friends`) VALU

我找遍了,没有找到适合我需要的东西

我有三个
for
循环,每个循环中都有一个
if
条件。代码如下:

for friend in friends:
    columns = friend.split("\n")
    if len(columns) == 4:
        c.execute("""INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `no_of_new_posts`, `already_friends`) VALUES (?, ?, ?, ?)""", (columns))

for friend in friends:
    columns = friend.split("\n")
    if len(columns) == 3:
        c.execute("""INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `already_friends`) VALUES (?, ?, ?)""", (columns))

for friend in friends:
    columns = friend.split("\n")
    if len(columns) == 2:
        c.execute("""INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `already_friends`) VALUES (?, ?, ?)""", (columns))
有没有更有效的方法?我想到了
操作符,就像这样:

 for friend in friends:
    columns = friend.split("\n")
    if len(columns) == 4:
        c.execute("""INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `no_of_new_posts`, `already_friends`) VALUES (?, ?, ?, ?)""", (columns))
and
        if len(columns) == 3:
        c.execute("""INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `already_friends`) VALUES (?, ?, ?)""", (columns))
and
        if len(columns) == 2:
        c.execute("""INSERT INTO `fb_friends`(`name`, `already_friends`) VALUES (?, ?)""", (columns))

与在同一个列表上重复三次相比,有人能建议最好或最有效的方法吗?

您正在寻找
if/elif/else

if len(smth) == 5:
    # do this
elif len(smth) == 6:
    # do that
else:
    # do something else

您正在查找
if/elif/else

if len(smth) == 5:
    # do this
elif len(smth) == 6:
    # do that
else:
    # do something else
完整代码如下:

for friend in friends:
    columns = friend.split("\n")
    if len(columns) == 4:
        c.execute("""INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `no_of_new_posts`, `already_friends`) VALUES (?, ?, ?, ?)""", (columns))
    elif len(columns) == 3:
        c.execute("""INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `already_friends`) VALUES (?, ?, ?)""", (columns))
    elif len(columns) == 2:
        c.execute("""INSERT INTO `fb_friends`(`name`, `already_friends`) VALUES (?, ?)""", (columns))
完整代码如下:

for friend in friends:
    columns = friend.split("\n")
    if len(columns) == 4:
        c.execute("""INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `no_of_new_posts`, `already_friends`) VALUES (?, ?, ?, ?)""", (columns))
    elif len(columns) == 3:
        c.execute("""INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `already_friends`) VALUES (?, ?, ?)""", (columns))
    elif len(columns) == 2:
        c.execute("""INSERT INTO `fb_friends`(`name`, `already_friends`) VALUES (?, ?)""", (columns))

在ForceBru的答案上,哪一个是最干净的。。。这是另一个有趣的选择

d = {2: """INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `already_friends`) VALUES (?, ?, ?)""",
     3: """INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `already_friends`) VALUES (?, ?, ?)""",
     4: """INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `no_of_new_posts`, `already_friends`) VALUES (?, ?, ?, ?)"""}
for friend in friends:
    columns = friend.split("\n")
    try:
        c.execute(d[len(columns)], (columns))
    except KeyError:
        print("you sure about this columns length which was:", len(columns))

在ForceBru的答案上,哪一个是最干净的。。。这是另一个有趣的选择

d = {2: """INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `already_friends`) VALUES (?, ?, ?)""",
     3: """INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `already_friends`) VALUES (?, ?, ?)""",
     4: """INSERT INTO `fb_friends`(`name`, `no_of_mutual_friends`, `no_of_new_posts`, `already_friends`) VALUES (?, ?, ?, ?)"""}
for friend in friends:
    columns = friend.split("\n")
    try:
        c.execute(d[len(columns)], (columns))
    except KeyError:
        print("you sure about this columns length which was:", len(columns))


您可以避免使用if语句,并将
列的大小改为4:
列+[None]*(4列(列))
我发现您使用
(列)
极易误导。它不起任何作用(您可以将
(columns)
替换为
columns
,并且不会发生任何变化),但它类似于
(columns,)
(请注意最后的逗号!),它创建了一个1元素元组……您可以避免使用if语句并将
columns
填充为大小4:
columns+[None]*(4-len(columns))
我发现您使用的
(列)
极易误导。它什么都不做(你可以用
替换
(列)
,什么都不会改变),但它类似于创建一个单元素元组的
(列,)
(请注意最后的逗号!)。感谢MaRZoCHi,这正是我所需要的。我选择了正确的答案,因为它在示例中使用了我的原始代码。谢谢MaRZoCHi,这正是我所需要的。我选择了正确的答案,因为它在示例中使用了我的原始代码感谢ForceBru正是我所需要的。感谢ForceBru正是我所需要的。只是要指出,ForceBru和MaRZoCHi的答案基本相同,只是MaRZoCHi对我的代码更为具体,例如,ForceBru使用的数字5和6永远不会是任何列的长度。。您的错误处理程序是一个很酷的添加,但如果代码不允许任何错误,则不需要它:/但是+1用于
dict
Marzochi的答案在我发布时不在那里:)因此没有将他们的答案相互比较,而是将Forcebru的答案与我的答案进行比较:)。谢谢,如果你不需要try/的保护,除非你总是可以删除它:)。我要指出的是,ForceBru和MaRZoCHi的答案基本相同,只是MaRZoCHi对我的代码更具体,例如ForceBru使用的数字5和6永远不会是任何列的长度。。您的错误处理程序是一个很酷的添加,但如果代码不允许任何错误,则不需要它:/但是+1用于
dict
Marzochi的答案在我发布时不在那里:)因此没有将他们的答案相互比较,而是将Forcebru的答案与我的答案进行比较:)。谢谢,如果您不需要try/的保护,除非您总是可以删除它:)。我正在努力理解这段代码,但是如果我的逻辑正确,这里的最后一行将导致
字段的长度等于
lenc
?但是当
len(columns)==2时,我需要删掉“
没有共同的朋友”
”和“
没有新的帖子”
“没有”
没有新的帖子”
”和“
已经有朋友了”
”。我总是有名字和朋友,但不总是有其他SSOFIEDS[:lenc]所以字段[:lenc]做这个字段[:2]从0包括到2排除:“
name
”,“
no_of u mutual_friends
”如果你总是有“
name
”和“
已经有朋友了”
”你必须更改字段列表的顺序如果已经有朋友了,你可以使用其他结构:字段[:lenc-1]+字段[-1:]我正在努力理解这段代码,但是如果我的逻辑正确,这里的最后一行将导致
字段的长度
等于
lenc
?但是当
len(columns)==2时,我需要删掉“
没有共同的朋友”
”和“
没有新的帖子”
“没有”
没有新的帖子”
”和“
已经有朋友了”
”。我总是有名字和朋友,但不总是有其他SSOFIEDS[:lenc]所以字段[:lenc]做这个字段[:2]从0包括到2排除:“
name
”,“
no_of u mutual_friends
”如果您始终拥有“
name
”和“
已拥有的朋友”
”,则必须更改字段列表中的顺序如果已拥有的朋友始终在最后,则可以使用其他结构:字段[:lenc-1]+字段[-1:]