在元组内部生成2个元素元组的集合

时间:2019-04-19 10:17:49

标签: python tuples

我必须生成一个元组,在该元组中将是元组,其中第一个元素显示以字符串形式输入的 i 数字,第二个元素显示具有示例单词+ i 在文字上。

我知道我可以手动进行操作,但是我想以pythonic-way的方式进行操作:)

PROPERTY_PRICES = (
        ('200', 'HUNDRED_2'),
        ('400', 'HUNDRED_4'),
        ('600', 'HUNDRED_6'),
        ...
        ('2000', 'HUNDRED_20'),
    )

我的代码,但只生成第一个元素“ 200”,“ 400”等,而不生成第二个元素。我无法在tuple()内的逗号后添加另一个forloop:

PROPERTY_PRICES = (
        tuple( str(i) for i in range(200,2200,200) ),
    )

3 个答案:

答案 0 :(得分:4)

tuple内使用理解:

>>> property_prices =  tuple((str(i*100), f"HUNDRED_{i}") for i in range(2,22,2)),
>>> property_prices
((('200', 'HUNDRED_2'), ('400', 'HUNDRED_4'), ('600', 'HUNDRED_6'), ('800', 'HUNDRED_8'), ('1000', 'HUNDRED_10'), ('1200', 'HUNDRED_12'), ('1400', 'HUNDRED_14'), ('1600', 'HUNDRED_16'), ('1800', 'HUNDRED_18'), ('2000', 'HUNDRED_20')),)

答案 1 :(得分:2)

PROPERTY_PRICES = (
    str(i) for i in range(200,2200,200)
)

PROPERTY_NAMES = (
    f'HUNDRED_{i}' for i in range(2,22,2)
)

print(tuple(zip(PROPERTY_PRICES, PROPERTY_NAMES)))

应该给你:

>>> (('200', 'HUNDRED_2'), ('400', 'HUNDRED_4'), ('600', 'HUNDRED_6'), ('800', 'HUNDRED_8'), ('1000', 'HUNDRED_10'), ('1200', 'HUNDRED_12'), ('1400', 'HUNDRED_14'), ('1600', 'HUNDRED_16'), ('1800', 'HUNDRED_18'), ('2000', 'HUNDRED_20'))

答案 2 :(得分:0)

我希望它对您有用

  PROPERTY_PRICES = (
          str(i) for i in range(200,2200,200)
        )
    PROPERTY_VALUES =(
           "HUNDRED_"+str(i) for i in range(2,22,2)
       )
    list = tuple(zip(PROPERTY_PRICES,PROPERTY_VALUES))

    print(list)