繁体   English   中英

如何打印 [1x2、3x4、5x6、7x8、...、99x100]

[英]How to print [1x2, 3x4, 5x6, 7x8, …, 99x100]

我尝试使用 for 循环打印 [1x2, 3x4, 5x6, 7x8, ..., 99x100]

这是我的代码。 我知道line4有问题。

a=[]
for i in range(1,100,2):
    for j in range(i+1,i+2,1):
        a.append(i,"*",j)
print(a)

我可以使用以下代码打印 1x2, 3x4, 5x6, 7x8, ..., 99x100 ,但它是字符串而不是列表

for i in range(1,100,2):
    for j in range(i+1,i+2,1):
        print(i,"*",j,",",end="")

我应该怎么做才能打印出 [1x2, 3x4, 5x6, 7x8, ..., 99x100]?

您可以使用ziprange

res = []
# list(zip([1,3], [2,4])) -> [(1, 2), (3, 4)]
# ------------- range(start, end, step) --------
for o, e in zip(range(1,100,2), range(2,101,2)):
    res.append(f'{o}x{e}')
print(res)

输出:

['1x2', '3x4', '5x6', '7x8', '9x10', '11x12', '13x14', '15x16', '17x18', '19x20', '21x22', '23x24', '25x26', '27x28', '29x30', '31x32', '33x34', '35x36', '37x38', '39x40', '41x42', '43x44', '45x46', '47x48', '49x50', '51x52', '53x54', '55x56', '57x58', '59x60', '61x62', '63x64', '65x66', '67x68', '69x70', '71x72', '73x74', '75x76', '77x78', '79x80', '81x82', '83x84', '85x86', '87x88', '89x90', '91x92', '93x94', '95x96', '97x98', '99x100']

您可以像这样更改您的第一个代码块:

a=[]
for i in range(1,100,2):
    for j in range(i+1,i+2,1):
        # use an 
        a.append(f"{i}x{j}")
print(a)

结果是一个字符串列表

['1x2', '3x4', '5x6', '7x8', '9x10', … '97x98', '99x100']

或者你可以写在一行中(这样会更有效率):

res = [f'{o}x{e}' for o, e in zip(range(1,100,2), range(2,101,2))] # ~27.4 µs

res = []
for o, e in zip(range(1,100,2), range(2,101,2)):
    res.append(f'{o}x{e}') # ~43.5 µs

使用列表推导、f-string 和一个范围计数器的更简洁的代码:

res = [f'{i}x{i+1}' for i in range (1, 100, 2)]
print(res)

在线尝试!

人们发布了不同的有效答案。 我只是想在这里再补充一点。 如果您不希望数据像您提到的那样在列表中显示,那么您可以在下面使用。

res = [f'{i}x{i+1}' for i in range (1, 100, 2)]
print(*res,end= " ")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM