我有一个表,其中所有120个字段都有类型varchar(75)。 我编码像这样。
sql = "create table " + tableName + "(" for i in range(len(flds)): if i == len(flds) - 1: sql += flds[i] + " varchar(75))" else: sql += flds[i] + " varchar(75), "是否有可能获得单线程?
谢谢!
I have a table in which all the 120 fields have got type varchar(75). I have coded like this.
sql = "create table " + tableName + "(" for i in range(len(flds)): if i == len(flds) - 1: sql += flds[i] + " varchar(75))" else: sql += flds[i] + " varchar(75), "Is it possible to get a one-liner for it?
Thanks!
最满意答案
首先,让我们使用join这样我们就不需要逗号和if 。 而且,虽然我们在它,我们可以循环flds而不是range(len(flds)) :
columns = [] for fld in flds: columns.append(fld + " varchar(75)"当然这意味着我们必须在最后添加) :
sql += ', '.join(columns) + ')'现在我们可以将这个循环转化为理解:
columns = (fld + " varchar(75)" for fld in flds)现在,我们可以将其内联到join :
sql += ', '.join(fld + " varchar(75)" for fld in flds) + ')'现在,我们有两条线显然可以组合成一条:
sql = "create table " + tableName + "(" + ', '.join(fld + " varchar(75)" for fld in flds) + ')'但这超过80个字符,所以最好把它写成两行。 我可能会这样做:
columns = ', '.join(fld + " varchar(75)" for fld in flds) sql = "create table " + tableName + "(" + columns + ")"最后,让我们使用一个f字符串而不是与+连接,这样可以使事情变得更短,但更具可读性。
columns = ', '.join(f'{fld} varchar(75)' for fld in flds) sql = f'create table {tableName} ({columns})'First, let's use join so we don't need the commas and if. And, while we're at it, we can just loop over flds instead of range(len(flds)):
columns = [] for fld in flds: columns.append(fld + " varchar(75)"Of course this means we have to add the ) on at the end:
sql += ', '.join(columns) + ')'Now we can turn that loop into a comprehension:
columns = (fld + " varchar(75)" for fld in flds)And now, we can inline that into the join:
sql += ', '.join(fld + " varchar(75)" for fld in flds) + ')'And now, we have two lines that can obviously be combined into one:
sql = "create table " + tableName + "(" + ', '.join(fld + " varchar(75)" for fld in flds) + ')'But that's way over 80 characters, so probably better to write it as two lines anyway. I'd probably do it like this:
columns = ', '.join(fld + " varchar(75)" for fld in flds) sql = "create table " + tableName + "(" + columns + ")"And finally, let's use an f-string instead of concatenating with +, which makes things only a little shorter, but a lot more readable.
columns = ', '.join(f'{fld} varchar(75)' for fld in flds) sql = f'create table {tableName} ({columns})'更多推荐
发布评论