比较list的第n个元素和另一个第n个元素,然后交换if语句true PYTHON 3.4.3

2024-10-02 02:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两张单子。它们都与剧院的礼堂有关。
第一个列表包含椅子的占用情况,如下所示:

xxooxoxoooxoxo
ooxoxooxoooxox
...
...

x=占用,o=空闲

我的第二份清单包含椅子的价格类别,如下所示:

33221111112233
33333222233333
...
...

我想做第三张清单,上面显示了空椅子的价格类别,如下所示:

3xxx11xx1xx2xx
...
...

所以基本上,我想用价格类别的数量来交换o-s。你知道吗

到目前为止我得到的是:

我的Rows清单已经包含了礼堂的占用率,我的Category清单列出了价格类别。你知道吗

iRow = -1
icatRow = -1
chairNumber = -1
chairPrice = -1
Row = []
RowCat = []
for row in Rows:
    chairNumber = -1
    iRow += 1
    Row.append(row)
    if Row[iRow][chairNumber] == 'o':
        for cat in Category:
            icatRow += 1
            chairPrice += 1
            RowCat.append(cat)
            RowCat[icatRow][chairPrice] = Row[iRow][chairNumber]
        chairNumber += 1
    else:
        chairNumber += 1
print('{0}\n'.format(Row))

我在RowCat[icatRow][chairPrice] = Row[iRow][chairNumber]行中收到以下错误:

TypeError: 'str' object does not support item assignment

你能帮我做这个吗?你知道吗

谢谢!你知道吗


Tags: infor价格类别rowsrowcategory椅子
3条回答

你的代码不是很python。试试这个。你知道吗

l1 = ['x','o','x']
l2 = [1,2,3]
l3 = [ r if r == 'x' else p for r,p in zip(l1,l2)]

返回一个新列表

['x', 2, 'x']

我把它弄得像这样:

def foo2():
    l1 = ['xxooxoxoooxoxo', 'ooxoxooxoooxox']
    l2 = ['33221111112233' , '33333222233333']
    l = []
    for i, row in enumerate(l1):
        t = [x if x is 'x' else l2[i][j] for j,x in enumerate(row) ]
        l.append(''.join(t))
    print l

试试这个:

for row, price in zip(rows, prices):
    new_row = ''
    for char,pri in zip(row,price):
        if char == 'o':
             new_row += str(pri)
        else:
              new_row += char

    print(new_row)

对于样本数据

rows = ['xoxo','oxox']
prices = ['1234','5678']

注意,这里使用字符串相当于使用列表列表,因为在许多情况下,字符串可以在Python中被视为列表(例如遍历字符串中的所有字符/遍历列表中的所有元素)

我出去了:

x2x4
5x7x

当然,您需要将行print(new_row)更改为您希望对被操纵行执行的任何操作

相关问题 更多 >

    热门问题