如何获得每个可能的列表案例总和

时间:2017-04-08 15:31:16

标签: python list for-loop indexing while-loop

您好我刚开始学习python。

我想在列表中创建数据的每个案例

if [a,b,c,d,e]

[aa, 'ab', 'ac', 'ad', 'ae', 'ba', 'bb', 'bc', 'bd', 'be'] and so on

但我无法弄明白该怎么做。

这是我可以去的地方:

def number_of_cases(list_data):

    mix_data=[]
    list_data = list(map(str,list_data))
    for data in list_data:
        mix_data.append(data+list_data[0])
        mix_data.append(data+list_data[1])
        mix_data.append(data+list_data[2])

我无法继续做list[0 1 2 3 4],因为我不知道该列表会有多长时间......

5 个答案:

答案 0 :(得分:3)

或者你可以做一个平面列表理解:

data = list('abcd')
pairs = [x+y for x in data for y in data]
pairs
# ['aa', 'ab', 'ac', 'ad', 'ba', 'bb', 'bc', 'bd', 'ca', 'cb', 'cc', 'cd', 'da', 'db', 'dc', 'dd']

顺便说一句,在这个特定的例子中,甚至不需要先列出一个列表

pairs = [x+y for x in 'abcd' for y in 'abcd']

也有效。

答案 1 :(得分:2)

考虑使用itertools.product?给定两个列表,它将创建一个列表中的项目和另一个列表中的项目的所有成对组合,作为元组序列。然后你将每个元组粘在一起。

from itertools import product
data = ['a', 'b', 'c', 'd']
pairs = [''.join(x) for x in product(data, data)]
print(pairs)

答案 2 :(得分:1)

@ AlexL&{39} product mix_data=[] list_data = ['a', 'b', 'c', 'd', 'e'] list_data = list(map(str,list_data)) for data1 in list_data: for data2 in list_data: mix_data.append(data1+data2) print(mix_data) 是可行的方法。这是代码的修改版本,具有所需的结果:

(3 4)

输出:

  

[' aa',' ab',' ac',' ad',' ae',& #39; ba',' bb',' bc',' bd',' be',' ca&# 39 ;,   ' cb',' cc',' cd',' ce',' da',' db& #39;,' dc',' dd',' de',' ea',' eb',   ' ec',' ed',' ee']

答案 3 :(得分:0)

您可以使用像@Alex L这样的itertools,或者您也可以使用这些简单的两个循环。

<?php

    //must have data:image/image-type;base64 if not then add it.you can use filedata in place of image variable.

    $image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAIAAAABlV4SAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAABJFSURBVHja1FoLmFTFla5zqu7tGRgRGB4JgkAAgSUBgyiQiIpm1UCMH6hIYkiUuJ8xhjjyIWuCGt9mjZtPTUwiefkI0fURCGh0VTRCAJOwiCyPCCJiEBSGcWZ6Hj3d91btOafu7ekhX1B7ZL5v23a4fW91ddV5/uc/pdRH9kL6H/iNxeviffoAJXf8BYAf7D90mAqSL6bzwOF+WH90e3C8UJALfqO/k/5Nlwp+L8UBTu7SMpw8whEj8NwZymi9dy89tX5oMvhIv0D5DSCkgveCRC8m/xFQF5VwqBLD228B59C5zEVfwiCEVKWpJrvgBbK4jhtIFoqsH+0/HD9OV3ZPH4AyYmRzLzGFpsA5ZZ0ZPMiUrBsBunAPqsSyAaDUMfwOZ19oNr4c3PufpsKA3wNtLMzA+jUke0MasA6OG2YSv2n3HkzE03XbSMxJrsBvAceMNHUHlM2Fx4+DxFN5mJl4gpHVg+W3uvzrQXtsAJ3OqFkWXbMJKNE4pJuhhdx8fUirdDH7SXEldH32GVpWr+I2Za360zMGxaFKV+uVKUo1qst8QkG7CdAGaq4IeKFWLZxHRoJFN5h4Qmidjq2yLcpZRWNAVXgjLInCqcZAfeRawMQ+oV38xXiv2oMOVvciE2dh0/ulZ6Bo2T16G75vtWtWton8WK1bqYvLLeNlPrysLa3Vcg5A+dfSLSc5gPwyGePovt6+PQYVqxyPmHIWvvQH+N/NZshQO/38iJKByjkXk25oAfH6DZwKfCJxaRpxznVBEEq00a27rurpIxHbruZn5u1dmo2ETCWrXJNyrbxP0QlfsAk1qJgeNbMY7v4BwCHBrZyA+GFUx6ZuRVQKb78eH1hs8s3oJDuPH6/mfA1a6uDjg1kDLiavNZFVqgCqSakm7ZroglycNQHWOFYqfmq0lnWYjevCysoMQDGjl2b3jz4GsX3/+uccHL3933aTERnTZiC2SAJ2WYgblW1AFnmziuvBNirXqEn8dD9uNPSR/IG+lX2Xp7hsrqGPR2zR6hDAw9ZyyUVB7NR5M/GMqRX5FnIBzYEyx+ZBJmR5lclfXrRswNKuGsSPaWONsiUypzbye6UDXPs8Lr7nyC6+A04cNER7kZNcE0NvFaHSErM64r/0CJxfumiDrb+e79t0b15FPNLChrU0j/m3uUEZmzBlGFLszNaXyWMtktQzMbRKYGLLdirgoKVDuqIBEi2tj14WyMYA0ZHykhDqYxp9l/T26cmW/u3XR5URjfAw+apkjLwx+eUf36mr+ltsU46CZBuyg9IPUzarUq5SqYxThDoDhYGGEFwFqm7KVWlVqdCQJ2sfgdF5nEvzIe1FtfDap52lS4EGfLCQA4fNZZwGKMFGCdxnND9iGG7bwTKn8MJQgW8r1YODe6FeP7TEPb0SXt9pW1ohCFXvnm7kMDt+PEyfBoOH0zjWB+Sdiihx0FcJ/UU0Be2HDFNVUUrXqNFBISlDOPS5NBGV67uA6U4xceU3NkNi/WLQhWYf9eGyuRngNR0qFRKqpJFgzGhcsUxbgR6UMdh5vIt7h6HrHOvzW5ei+ocKo0xPh/SbjNVY7bybGecIdsgDx5M0Q7lCeOyxYQL1PXjtWD+kFku+h1NPNTZn2Pwo64mj0zbiRpQYxQA2apH8I/ICzkXQmRzQAcTLZXhgd8CLbpGw2Mo/SVsa8LGi+ZoOpgi6FJPLxoxMZV7bnOF5sj5A8QY4ajUoJ6qYfWEApbLvVLQFrRMPY0GexWgZbZv8GJsQBSioqjIdFpqOx/Y6RlC30qUr6d8PGfMVKAki6YE10CCqEMWufsakFlhUKXYCFXEdiV4PO1/lQM7ip98jwBOrlUuNVMwgei/WQCJvKGExSuvsFNXW7SURSHKg2SRp8H6aedpcrUmiE3wgNRx+fxYEJdPFqOP0kLESgiLBmAxb1W+XEvC3HOQhcn58UrxFElB8bU3AQwKLfEtQLYPf55/WojhfCDmPiDESdqA6JkM6uheCS50MyttDKshYLm69geTtVD5BxD5ebdwMPvApl3qtKxIqPujyVexxuktKUAaHoF5cy88ANYftWGzGyWadKE3jNy4WkiDlfcrKcRyxBV0q6F5pZsy2TAZFyYRyHw8ciBKCSJYrwd7oRKo2zVKan3Jt4WRsxPec2vcujSOcHvM4bSR7W5CSrlCnBg5y48c69opUR+VhDa968uN41nm0nzz91zH9uYASL6/Jy8LLLIq9C/CWuY6h5V90fjjl9BjyqqWgrroaBYirt/bapOYmFcQx/UOWyOhDuV077KQJ5oJz7SyX5NbD68H8c9bOLzQmMfbvGwFZT8zgTjRgKd3S3IOPdTt3J/OfPkWfN8v96+n2vfcqzp6ee69Rc72joH8f99BjBY8qaNUXz4HqATxvSI7G/ibr8xZEqtec71/biS1Nseppq6rowll4H3M6jD9YphBZldCaE4GC1ypbCYitnnmGH4kLr9QrV8E3v+WGj1YnTc7VHQwovjiBewWhMPmblo29Z193wqcJXOgf3puoiZYQ+xCR6v4vr9phQ7ka+ealrAJw5fKUaYrhwHrhTIkdLZojoIRzn1MpnPvXwd0i0IhFzfezCVPGekbmLxioU4FhVdtBuhmse46jXdTCJZFPcBJbDef+SG9brxoO0AbN3p2mmODLTA5kRePHhXRx1hlSo3mMlA1iXwq3sAMuf4xCpH52GWMQlnyM+3YHX53DtOrd/2Fu/h7njdmzdP3ebg8/EMy6gBEE3WSskU/rDcFLvpCIpK6gCtZFIJarqnth59glUL++jxPNRbO48LUt7fiMqhwqcQp5FvDvfkvQIHz0N+H/rNULavAzkzJCC6h3dujYJUALDUw5OUnVu7Zw8R21Sr7PQqGRS1avECfJLmqQ+oknh4knokqTXRm2xEqk5aIK/vBEyHpowmKFmUiu2bCNNep/6Buo3tX6iUfC9WuC6dN1kfYCMbCnfhewyRUE9jVJqd2oCtlEJ5St/QUBAlLF7BnaE2dlvgYdgyTI/W8al0eWSoMv8zFqkJ1wtakYPjm89Xt61AjUxmeDImXG1wMHJNz9L+/Dl/+ka99mTyiInSTOkxeRN6v8ITJqYZf7xtzOwb5PjvJWLgvNtovfNWtyR4L7dJ/fjnGU9VV1wdS9TXoIdAIBPY4y9JIBZu2L6qZrcfZM06cXfmKoFs5YxfWa58nq4gbidA9XX/n+yz+ct5iMcG8EBPJMWzAkoJieoWgXewulpESoUMIuQoNTR4PTUa8Baswo3X+AeW1bPoptbS1ngWHDYMOfgwmTYrJMJ2CPvl7bYB/8hVl0o6rqHmz9m6VMRxUjBVkrtblI38URqTEuew+YCQRBRAJ+gNMcA0DAv28LJn8u37sajq5ytQfU9jcCSr3KmTmz8cGHI+vs5i0FG+Ebb5h8C+ba7NgxzvSgKF+I6g1iAY5CK9iIMo1rc/mCGTyowOUnrbYgedFTlrKN+kbXCT2ANdLsIFDDUI9udLeb1+HYz+Dyx6IwxK2bSUFkDK66d+Hqq/SmLfHo0THncdaN/dmP3LwFkG9WuiLigtkJBDk6lkKZoJ3ol0QSRo8v08OHqhFD3DGfdEGefs9KYuGMQj+/553OUaoTjmcrJ0vlWJHliO4KeM188/tHmLVe94L3AXSJg7L5LlmMM7+Ap07FNc+ZVzbg6hfwpAm6T89g4EC8/NIKR0afQw6gWSGmCuRLOuBaIziwCxhaZZPYzY4X8YRkhJ3iW7M5EqrwkgwskOxFaXtVTXTOefHCGjVpqkeEVrC12b6FYFuw4jkcOw5mzYBBg9R112O/nmrpsnjXjvjLs7BQiFRIjmM9e8xeIfDlc6eRYUWaSkbwiFYJePV5xf39rc7p4ZiPs5w4p0rZzvWn1YOOMdV9KHmb7D4JRL4Ey3POumlR5YqlvjUI+3bhUUfpF57CXA7vv09fMgdfWSOlbB7iJpAwrRiDWF3dh+351JOpUjdcixZDk1N1b6Gghfchmg73rLYuGeKxqlzYhTX2YG2+Z0+1dRvTQrGWmiUHugIW3ZJ/rzYeOdxMPlHdeJtprHOnft5uWQ+r1sYHGmDiVDjlswEEbHxUZjjp8s6eDadN4QlGj1SMtxJ8q4EZOfjjKq1snDCCZavCc6kSuaVmZ2IYauaFZMUnT0afGZgsamQD2bGB2YDL5hrPH6/+b6yszLCumsw7b8Lv/yskubJiswkt0npAPfdM5p47gvNnBt++wvi+RJKFJElf/BXd+TYW7tmB7GrNjGE81W6lQGTmByrnzqnMHuTijhmuJo/H4dknzQXT9UmTTeM+WLOSAcW35+k+vSn+4luvS6YTuMWAL89fefw3+rsL8JoFYcTQWDESa/KlClL9IDSdLp/XIBEsf1R692KmjFUbOdlRch02Qk07M5x3efDTu6VrmBVtOHXtd8i4K269Ldy/h7PykvvN/jdZ9hvXmnUvct3p2oRf84goy4LP1+P6VfDXVdo3jeKEodFv/Y0Zmg9yFkMflm91ffuGZ0+LuFfmc6UQDS5Pxkw/4Orq3IIroeKoWEVSvmg1aZydf3X0+jao3Q//Mjaurgr27Yef/swueURtfBVOOUl1q6aqlqsa6xGi01hhB3wCBgykekJ4EYsupHRq77wDVq2JU/RZ5nkNVt+Aj0kDM27vidhmpMjdVBtcd41eMD94ewdvj4N9lqknso0Vj5Nc2HJ69MATJ3EnlEqoKIYJx+vLvy5UZysk3B7DRwaOnvn0lRArR5ywIlN+p/TQ1/6d4rsEKoWK82wcrbthryy6Vfhj7oYIceZg1PDMG5v4KyOH8QLIpq+4zCx7IiTYd/xYQd1tqjhVAu8aMMomu/LdrZXLk+Z04gxl80venm68E30pIWQWx1kXIa27Rz9Halcx2IIgH+X5B/fkiralT1XW1ISnnwZPLtXZRjz389ELawrfv1nX1iUFPoD1tUTC7FCtLRCDo7VhePbjXzD7JlHVFQeV039I6RmUAyERSk/fE3W0FHQJg8asCgd9QrbcH4Gq+PnluOLp8K6f5FzSfWS4dcmXdb8+7o67nUvWxBQfNjsGKUKrMVo1DrpT2EAMpLYgm8SCs+X2H0qyI351VsDmFLGxRtLPZG7Ud9mEJeACUrJELFxyaz127xa+/JL0cJko4OBGC3r1ZW71ki0d3APza2DTWsk/UlcJFJDKLlYP/jLQqrNUcWn/M7le+2zIMTtH7pu0OhOiV2BInE3Id3YM2camv5Bbm4cfCLwJth3kVdXtDvfvwxHHGWlyB9dfm554oHhQz7WunN0wYYVO8RJCwq+UhTXYEAVf+K7fZ8+MCo2BCiEywoV72CahVvhWoZB8w4Eso0196sToxuvsl77mdm/lwzsUK++9J4hcNGYc9uqu71/M82cMofeY4bhlq1EhW8+1CzDfFjPqs57JdVK9lIk1jEzcfpCnf9/Qn5RiSZf0nj0l4UONNy3fRrBW/fC2TGWFiSMkK6LZKOtTSU0zbGLCWN2yCDmMNjMOl5pW7dxEQFy3H0YDpTpzdAk6NEWT6YYOkd6HSNql0TBuSFIHuYTfAI9pwpqrKilJ/+iugLNHXr35mhESgC3tC2ezof7qJwyrOCIXeNoN6wNoP3dWeqSu7ONwCO1igPaTPn37YFMt/zaTS1mBN9lECRTmGc+1cES5YVEw8riKu+4QSec9dcCm71qZK5l2ZmboCLNzY+hPodCjR5eAKhF/R7B9RE6R4eqVBJMM85Mt4IuvyDfUstzgooAzeHBm1KgwITuauMGTnGwQxJV9B9/cyrKPZQP/vhCNbwB20UmH9FDL7TfJabyYD1z4soaDUhO7wXfnM9YgH/A4JeE5myguiwW28Bi+z0/1OdMypcfQuurcXtosHT0SCE57yM1ld7Py6PWUSUk86NMPqJz41WId12uXkyMbWd/85CbZmj8iFdPtTtx1R0A7Wimtde6lZOg6OfaWYwfY8Fdz+lR+FIbhF79YcdcPKvNNGOVYY9aX0zHO+UrxGJc3I9115z89bWpKW+hyeuw7C7Xvn9k0+JCd/HkVbn2FcZ4/eOgfff9Wk3JCmPiAcEvQdbqA4gngogxN0cJuuD7T1shHVqVU8oeawAef7Zux5sqg/YulEVxiIJTr0R/6WwSGLcQ+kxebTJAWSILNcOIkO2USDh0MQ45R3arUi6vh5w/F7+5BYSnTI+sppkwnkY/QFUfTi+ouNsx1IsK0b1QC9n0NgKVG4k8RwKFt/COYB/5/vP5PgAEA77fJf3rfdyAAAAAASUVORK5CYII=";
?>
<table border=1>
    <tr>
        <td>Image</td>
        <td><img src=<?php echo ($image); ?>></td>
    </tr>
</table>

答案 4 :(得分:0)

我的第一个建议是不正确的,如下所述。这个答案仍然正确。

一个可爱而简洁的方法是使用列表推导和f-strings(f-string只在python 3.6及以上)。 EG:

chars = 'abcde'
pairs = ['{x}{y}' for x in chars for y in chars]

如果你没有f字符串,那么就是这样:

chars = 'abcde'
pairs = ([f'%s%s' % (x, y) for x in chars for y in chars])

>>>print(pairs) ['aa', 'ab', 'ac', 'ad', 'ae', 'ba', 'bb', 'bc', 'bd', 'be', 'ca', 'cb', 'cc', 'cd', 'ce', 'da', 'db', 'dc', 'dd', 'de', 'ea', 'eb', 'ec', 'ed', 'ee']