【问题标题】:Simple way to create possible case创建可能案例的简单方法
【发布时间】:2011-02-01 22:00:20
【问题描述】:

我有数据列表,例如

a = [1,2,3,4]
b = ["a","b","c","d","e"]
c = ["001","002","003"]

我想创建一个新的另一个列表,该列表混合了所有可能的 a、b、c 情况,像这样

d = ["1a001","1a002","1a003",...,"4e003"]

有没有不用写很多for循环就可以生成d的模块或方法?

【问题讨论】:

    标签: python methods module case


    【解决方案1】:

    这个怎么样?使用map

    print [''.join(map(str,y)) for y in itertools.product(a,b,c)]
    

    【讨论】:

    • 返回['1a001', '2b002', '3c003']
    【解决方案2】:
    map(''.join, itertools.product(map(str, a), b, c))
    

    【讨论】:

      【解决方案3】:

      如果您也将a 转换为str 的列表,这会更简单一些。 并节省了对 b 和 c 的每个元素不必要地调用 str()

      >>> from itertools import product
      >>> a = [1,2,3,4]
      >>> b = ["a","b","c","d","e"]
      >>> c = ["001","002","003"]
      >>> a = map(str,a)                   # so a=['1', '2', '3', '4']
      >>> map(''.join, product(a, b, c))
      ['1a001', '1a002', '1a003', '1b001', '1b002', '1b003', '1c001', '1c002', '1c003', '1d001', '1d002', '1d003', '1e001', '1e002', '1e003', '2a001', '2a002', '2a003', '2b001', '2b002', '2b003', '2c001', '2c002', '2c003', '2d001', '2d002', '2d003', '2e001', '2e002', '2e003', '3a001', '3a002', '3a003', '3b001', '3b002', '3b003', '3c001', '3c002', '3c003', '3d001', '3d002', '3d003', '3e001', '3e002', '3e003', '4a001', '4a002', '4a003', '4b001', '4b002', '4b003', '4c001', '4c002', '4c003', '4d001', '4d002', '4d003', '4e001', '4e002', '4e003']
      

      这是一个时间比较

      timeit astr=map(str,a);map(''.join, product(astr, b, c))
      10000 loops, best of 3: 43 us per loop
      
      timeit [''.join(str(y) for y in x) for x in product(a, b, c)]
      1000 loops, best of 3: 399 us per loop
      

      【讨论】:

        【解决方案4】:
        [''.join(str(y) for y in x) for x in itertools.product(a, b, c)]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-14
          • 2018-01-10
          • 2019-01-18
          • 1970-01-01
          相关资源
          最近更新 更多