【问题标题】:How can i append a an item only if it meets certain rules in python只有满足python中的某些规则,我才能附加一个项目
【发布时间】:2012-03-17 21:25:42
【问题描述】:

我想将一个项目附加到list_b,前提是它高于'5H',即'6H'

list_a = ('2A','4A','8H','6H')
list_b = ['5H']

list_a.pop() 给出一个'6H' 因此,如果我 append '6H' 它应该能够添加到 list_b,因为它只是在 '5H' 之上。

我尝试比较第一个值,但它给出了错误,因为下面代码中的 1int,而 list_b[-1][0]str

if list_b[-1][0] + 1 != list_a.pop()[0]:
    print('Error')

因此我不能使用list_b[-1][0] + 1

【问题讨论】:

    标签: python list append


    【解决方案1】:

    使用int将字符转换为它所代表的整数就足够了:

    if int(list_b[-1][0]) + 1 != int(list_a.pop()[0]):
        print('Error')
    

    【讨论】:

      【解决方案2】:

      假设list_a 确实是一个列表,而不是一个元组,否则list_a.pop() 将不起作用...

      你需要做两件事:

      (1) 将第一个字符转换为int,以便您可以正确比较它们
      (2) 检查第二个字符是否相同...从您的问题描述来看,'6G''6I'(以及许多其他字符)似乎不正常

      b_value = list_b[-1]
      a_value = list_a.pop()
      
      ok = int(b_value[0]) + 1 == int(a_value[0]) and b_value[1] == a_value[1]
      

      【讨论】:

        【解决方案3】:

        使用列表推导:

        list_b.extend([i for i in list_a if int(i[0]) == (int(list_b[-1][0]) + 1)])
        

        【讨论】:

          【解决方案4】:

          首先,您的list_atuple,而不是列表。检查括号。

          如果

          list_a = ['2A','4A','8H','6H']
          list_b = ['5H']
          

          你可以这样做:

          while list_a:
              t = list_a.pop()
              if int(t[0]) == int(list_b[-1][0]) + 1:
                  list_b.append(t)
              else:
                  print 'Error'
          

          迭代处理list_a的元素。

          【讨论】:

          • 我只需要比较 t[0] 引用的项目的第一个值
          • @Lycon:“我只需要比较 t[0] 引用的项目的第一个值”是模棱两可的,可能与您的问题不一致。您应该更新您的问题,并举例说明什么是可以的,什么是 可以的。请在更新您的问题之前阅读我的回答。
          猜你喜欢
          • 2018-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-17
          • 2019-01-11
          • 1970-01-01
          相关资源
          最近更新 更多